这是一个 for 循环,用于打印给定范围内的素数,并在最后打印给定范围内有多少个素数。该程序还将 1 作为素数打印。
程序:
#include <stdio.h>
int main(){
int a,b,k,c,s=0;
printf("Enter the start : ");
scanf("%d",&a);
printf("Enter the end : ");
scanf("%d",&b);
for( ;a<=b;a++){
k = 1;
for(c=2;c<=a/2;c++){
if(a%c==0) {
k-=1;
break;
}
else
continue;
}
(k!=0)?(printf("%d ",a),s+=1):printf("");
}
printf("\nNo. of Primes : %d",s);
return 0;
}
输出:
Enter the start : 1
Enter the end : 25
1 2 3 5 7 11 13 17 19 23
No. of Primes : 10
我想知道如何更改代码以仅获取素数。
最佳答案
你得到1
显示结果是因为您设置了
k = 1;
以及下面的循环
for(c=2;c<=a/2;c++){
...
如果 a
则不会更改此设置是 1
因为c <= a
没有实现。
替换
k = 1;
与
if(a > 1) k = 1;
else k = 0;
循环中的代码
for(c=2;c<=a/2;c++){
if(a%c==0){
k-=1;break;}
else continue;
}
有点奇怪。
而不是 k-=1;
我会写k=0;
因为这清楚地表明您希望该值变为 0
。您可以删除else continue;
因为这就是循环无论如何都会做的事情。
关于c - For 循环没有执行预期的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55124489/