下面是改过的,你的程序,每次只要有一个for(j=2;jmain(){ int m,n,min,max; int i,j,N=0; int sum; sum=0; scanf("%d%d",&m,&n); if(m>n)min=n,max=m; else
min=m,max=n; for(i=min;iint prime (int x,int y){//判断质数过程,实义为主函数做判别
while (yn){no=m;m=n;n=no;}//此时的no变量无实义,只作为中间变量使用,目的是为了节省辅助空间
if (m<=2) {sum+=2;no=1;printf("2\n");}//为了减少时间复杂度而提前加上特殊的偶质数
for(i=m%2?m:m+1;i<=n;i+=2)//每次+2,也是为了减少时间复杂度
if (prime(i,2)) {sum+=i;no++;printf ("%d\n",i);}
printf("no=%d\nsum=%d\n",no,sum);
while (1);
return 0;}参考资料:这是最简便的办法了
已赞过已踩过< |