满意答案

00e27ab806e4881f8254fe7ae8741834.png

odxalg

2017.01.18

00e27ab806e4881f8254fe7ae8741834.png

采纳率: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分享举报

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐