① c語言編程,求500以內的全部素數,每行輸出10個。可以提高懸賞哦!
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
inlineboolIsPrimeNumbers(intn){
if(n<2)returnfalse;//1既不是合數又不是質數(素數),所以排除,2是最小質數
//對n開方,目的在於減少循環次數,原理:因數在根的前面都沒有,則後面肯定不會有
intk=(int)sqrt((double)n);
for(inti=2;i<=k;i++)
{
if(n%i==0)returnfalse;
}
returntrue;
}
intmain(){
intcount=0;//計數器,記錄每行輸出了多少個
for(inti=2;i<=500;i++)
{
if(IsPrimeNumbers(i)){
printf("%d",i);
count++;
if(count%10==0)printf(" ");//取模每10個換行
}
}
printf(" ");
system("pause");//屏幕暫停
return1;
}
② C語言編程:求五百以內所有的素數
int sushu[100]; //保存素數int scount=0; //素數的數量int GetSS(int Max) //完成查找素數的過程{ int m; if(Max<2) scount=0; else { scount=1; sushu[0]=2; } m=2+1; while(m<=Max) { int i; for(i=0;i<scount;i++) { if(m%sushu[i]==0) break; } if(i==scount) { sushu[scount++]=m; } m++; } return scount;}
int sc=GetSS(500);
③ c語言中的素數編程題:計算500-800區間內素數個數,並按從大到小的順序進行加減間隔計算求和。
#include<stdio.h>
//計算500-800區間內素數個數,並按從大到小的順序進行加減間隔計算求和。
intmain()
{
intcnt=0,sum=0,i,j,t=-1;
for(i=17;i>=2;i--)
{
for(j=2;j<=i/2;j++)
{
if(i%j==0)break;//在i/2前只要遇到一個能除盡的數則跳出本層for循環,則j的值一定小於等於i/2
}
if(j>i/2)//i/2前的每個數都除過一遍且不能除盡(即for循環自然結束)則判斷j為素數
{
t=-t;
sum=i*t+sum;
cnt++;
}
}
printf("%d%d",cnt,sum);
return0;
}
判斷條件的位置放錯了,詳見注釋,上邊的代碼是修改後的。
這里按照原程序的計算方式,為先減後加的順序,如2到13間的素數和為:
13-11+7-5+3-2
④ 寫了一個c語言程序(統計500以內最大10個素數並求和)哪裡不對 初學求指教
你好,我為你解答:
我學過C++,已經拿到了國家級三級證。
這個可以這么寫
#include <stdio.h>
#include <math.h>
int prime(int n)
{
int i;
for(i=2;i<=sqrt(n);i++)
if(n%i==0)
break;
if(i>sqrt(n))
return 1;
else
return 0;
}
main()
{
int n,count=0,sum=0;
for(n=500;count!=10;n--)
if(prime(n))
{
printf("%d ",n);
sum+=n;
count++;
}
printf("\nThe sum is %d.\n",sum);
}
懂了嗎?不懂請追問。
滿意請採納,謝謝。
⑤ C語言:計算500以內的素數合(看不懂這個,求解!)
#include<stdio.h> isprime(int n) { for (int i = 3; i < n / 2; i++) if (!(n%i)) return 0; return 1; } main() { int sum = 2; for (int i = 3; i < 1000; i +=2) if (isprime(i)) sum += i; printf("sum = %d\n", sum); }
⑥ c語言求300-500以內素數之和
#include<stdio.h>
intisprime(intx)
{
inti;
for(i=2;i*i<=x;i++)
if(x%i==0)
return0;
return1;
}
intmain()
{
inti,sum=0;
for(i=300;i<=500;i++)
{
if(isprime(i))
sum+=i;
}
printf("%d ",sum);
return0;
}
⑦ 輸出500到600之間所有素數,並求和,c語言
#include<stdio.h>
intmain()
{
inta[101],i,j,b[101],sum=0;
for(i=0;i<101;i++)//建立兩個相同的數組1到100
{
a[i]=i+500;
b[i]=i+500;
}
for(i=0;i<101;i++)//如果a中的元素是素數,那麼b中相應序號的元素的值將會變為0
{
for(j=2;j<a[i];j++)
{
if(a[i]%j==0)
b[i]=0;
}
}
for(i=0;i<100;i++)
{
if(b[i]!=0)//判斷b中的元素是否等於0,不等於的時候輸出a中序號相同的元素值
{
printf("%d ",a[i]);//輸出素數
sum+=a[i];//將判斷出來的素數相加
}
}
printf("sum=%d ",sum);
return0;
}
⑧ 如何用c語言編寫程序輸出500以內最大的10個素數及其之和
演算法簡單,直接從500到1循環,判斷每個數是否為素數,如果是素數,輸出,並累加,一直判斷出10個素數,終止循環,輸出累加總數。
常式:
#include<stdio.h>
intmain(){
intprime;
intprime_pti[100];
intprime_z=0;
inti,n,p=0;
inta,b;
intstep=0;
for(prime=i=1;i<=500;i++)/*找出500內的所有素數*/
{
for(n=2;(n*n)<=i;n++)/*判斷一個數是否是素數*/
{
if(i%n==0)
{
prime=0;
break;
}
}
if(prime)/*是素數就存儲在數組中*/
{
prime_pti[p]=i;
p++;
}
prime=1;
}
for(a=0;a<p-1;a++)/*從大到小排序素數數組*/
for(b=a+1;b<p;b++)
{
if(prime_pti[a]<prime_pti[b])
{
step=prime_pti[a];
prime_pti[a]=prime_pti[b];
prime_pti[b]=step;
}
}
if(p>9)/*判斷素數個數是否達到10,是則輸出,否則退出。*/
{
for(i=0;i<10;i++)
{
if(i<9)
printf("%d+",prime_pti[i]);
else
{
printf("%d=",prime_pti[i]);
for(n=0;n<10;n++)
prime_z+=prime_pti[n];
printf("%d ",prime_z);
}
}
}
else
printf("Sorry! ");
return0;
}
⑨ C語言:求100-500之間所有素數之和.
#include"stdio.h"
void main()
{
int s=0,n,a;
for(n=100;n<=500;n++)
for(a=2;a<n;a++)
{
if(n/a==0)break;/*如果n不是素數,那麼就會被從2到它本身之間的數整除,就跳出內循環*/
if(a=n) /*如果n是素數,那麼內循環就不會提前結束,等到最後一次循環之後a++,a就會與n相等*/
s+=n; /*將素數全部相加,也就是求和*/
}
printf("100-500之間所有素數之和為:%d\n",s);
}
還有一種好像是(我對這個方法的數學原理不清楚,所以也不大會用)判斷如果2到這個數的開平方數都不能整除這個數,那麼這個數就是素數:
#include"stdio.h"
#include"math.h"
void main()
{
int s=0,n,i,k,j;
for(n=100;n<=500;n++)
{
k=sqrt(n);
for(i=2;i<=k;i++)
{
if(n/i==0)break; /*判斷依據和上面的一樣,如果不是素數就提前跳出內循環了,下面的也一樣*/
if(i>k)
s+=n;
}
}
printf("100-500之間所有素數之和為:%d\n",s);
}
大概就是這樣,,,,你調試下吧。。。。