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

标签 c

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

相关文章:

c - 如何让服务器保持开启状态?

c - 在我的 c 代码中删除重复项时出现错误

java - 关于动态规划我需要了解什么?

c++ - GetFullPathNameA 不返回 DLL 的路径

c - 填充在结构中如何工作?

c - 如何检查用户输入的字符串是否与某些内容相同

通过Android模拟器无法读取但可以写入串口

混淆 regrading ungetc 函数

javascript - 如何从 Mozilla Rhino 的 Javascript 调用 C++

c - 窗口退出时如何连接函数?