满意答案
odxalg
2017.01.18
采纳率:41% 等级:9
已帮助:313人
123456789101112131415161718192021#include <stdio.h>//计算500-800区间内素数个数,并按从大到小的顺序进行加减间隔计算求和。int main(){ int cnt=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); return 0;}
判断条件的位置放错了,详见注释,上边的代码是修改后的。
这里按照原程序的计算方式,为先减后加的顺序,如2到13间的素数和为:
13-11+7-5+3-2追问: 判断条件的位置怎么错了啊?我后来把if(j>i/2)改为≥就对了
03分享举报