#include <stdio.h>
int main() {
int x, i, counter = 0;
printf("Input number!\t");
scanf("%d", &x);
for (i = 0; i <= x; i++) {
if (x % i == 0) {
counter++;
}
}
if (counter <= 2) {
printf("%d is a prime number.", x);
} else {
printf("%d is not a prime number.", x);
}
return 0;
}
似乎循环部分是问题,但我不知道为什么。我对编程非常陌生,因此如果遇到愚蠢的错误,请忍受。
尝试此代码。
在输入后除以零将变为无穷大。使当循环内除法时,sure循环从1开始
#include <stdio.h>
int main()
{
int x,i,counter=0;
printf("Input number!\t");
scanf("%d",&x);
for(i=1;i<=x;i++)
{
if(x%i==0)
{
counter++;
}
}
if(counter<=2)
{
printf("%d is a prime number.",x);
}
else
{
printf("%d is not a prime number.",x);
}
return 0;
}
正如@Some程序员伙计所提到的,由于被0除,所以您无法执行x%0-这是在第一次迭代时发生的。
因此将循环更改为从1开始,如下所示:
for(i=1;i<=x;i++)
{
if(x%i==0)
{
counter++;
}
}