通过您的程序可以看出,您想通过一维数组,来计算最大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;
}
#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;
}
供参考
你把sum赋值为0先