c语言:求1000以内的素数并求出其中最大十个素数之和

我这样做为什么不对,最简单怎么改才能输出正确答案?
2024-11-22 17:17:47
推荐回答(3个)
回答1:

通过您的程序可以看出,您想通过一维数组,来计算最大10个素数之和。但是您并没有将前10位素数赋值给一维数组,所以无法得出正确结果。

我根据您的题目要求,编写代码如下:

/*输出1至1000之间的素数,并求出其中最大十个素数之和......by Mr.Kong*/ 
#include
int isprime(int a);
main()
{
int i,s=0,n;
for(i=1000;i>=2;i--)    /*将素数倒序输出,方便计算前10位素数*/

if(isprime(i))
{
n++;
printf("%d,",i);
if(n<=10)    /*计算前10位素数的和*/
s+=i;

}
printf("\n最大十个素数之和s=%d",s);
}
int isprime(int a)    /*定义函数,判断是否是素数*/
{
int i;
for (i=2;i if (a%i==0)
return 0;
return 1;
}

回答2:

#include

int main(){

int i,j;

int n=0,sum=0; //n为累计素数的个数,sum为累计素数的和;

for (i=999; i>1; i--) {

for (j=2; j<=i; j++) {

if (i%j!=0) { //如果不能整除,则继续循环;

continue;

}else if (j!=i){ //判断整除时j的值是不是i本身,如果不是本身,则跳出循环;

break;

}else{

sum+=i; //累加i;

printf("%d ",i);

n++;

if (n==10) {

printf("\nsum=%d\n",sum);

return 0;

}

}

}

}

return 0;

}
供参考

回答3:

你把sum赋值为0先