#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;
}
似乎循环部分是问题所在,但我不知道为什么。我对编程很陌生,所以如果这是一个愚蠢的错误,请耐心等待。
试试这段代码。
在给出输入后除以零时,它将进入无穷大。做 确定循环从 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程序员伙计所提到的,你不能做x%0
,因为除以0
- 这发生在第一次迭代中。
因此,将您的循环更改为从1
开始,如下所示:
for(i=1;i<=x;i++)
{
if(x%i==0)
{
counter++;
}
}