我似乎无法识别逻辑中的错误,也无法查明为什么我的程序会打印它的数字。分配是创建一个程序,该程序将列出从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/