c - 在C语言中与初学者级别的循环函数苦苦挣扎

标签 c loops nested-loops

我似乎无法识别逻辑中的错误,也无法查明为什么我的程序会打印它的数字。分配是创建一个程序,该程序将列出从1到用户输入“ n”的所有素数。非常感谢您,请告诉我是否以任何方式错误地格式化了此问题。

#include <stdio.h>

void prime(int);
int main(void)
{
    int number;
    printf("Enter your n:\n");
    scanf("%d", &number);
    printf("Prime number(s) from 1 to %d : ", number);
    prime(number);

    return 0;
}
void prime(int n)
{
    int i, j, primecounter = 0;
    for (i = 0; i <= n; i += 1)
    {
        for (j = i; j > 0; j -= 1)
        {
            if (i % j == 0)
            {
                primecounter += 1;
                if (primecounter > 2)
                    continue;
            }
            printf("%d", i);
        }
    }
}

最佳答案

解决此问题的另一种方法(更好的是,我认为)是将第二个for循环更改为从i / 2开始只检查2,仅检查整数,然后添加一个if语句来检查primecounter是否大于零。 ,而不是素数。同样不要忘记在检查完每个数字后将质数计数器初始化为零。

primecounter=0;
for (int j=i/2;i>=2;j--){
if (i%j==0)
 primecounter++;
}
if (primecounter)
      printf("%d \n",i);
}

关于c - 在C语言中与初学者级别的循环函数苦苦挣扎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58385726/

相关文章:

java - 如何将C语言结构定义转换成Java代码?

python - 检查数字不是列表中 2 个整数的总和

c++ - 在C++中定义一个 'for'循环宏

javascript - Javascript 中嵌套 for 循环的替代方案

loops - 如何在 Ansible 中使用 when 条件循环

swift - 解决 Swift 3 中过多的 else-if 语句

java - LinkedHashMap 复杂度

c - 如何在嵌入式系统中为某个任务禁用/延迟看门狗定时器

c - memcpy 在 Linux 中移动 128 位

c - UDP 和 TCP 之间的同步