我正在执行质数检查程序:当我尝试运行它时,它停止工作[关闭]

问题描述 投票:0回答:2
#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;
}

似乎循环部分是问题,但我不知道为什么。我对编程非常陌生,因此如果遇到愚蠢的错误,请忍受。

c primes modulus
2个回答
3
投票

尝试此代码。

在输入后除以零将变为无穷大。使当循环内除法时,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;
}

0
投票

正如@Some程序员伙计所提到的,由于被0除,所以您无法执行x%0-这是在第一次迭代时发生的。

因此将循环更改为从1开始,如下所示:

for(i=1;i<=x;i++)
{
    if(x%i==0)
    {
        counter++;
    }

}
© www.soinside.com 2019 - 2024. All rights reserved.