gpt4 book ai didi

c - For 循环没有执行预期的操作

转载 作者:行者123 更新时间:2023-11-30 19:59:44 24 4
gpt4 key购买 nike

这是一个 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com