如果我的输入是3,那就说它不是素数

时间:2016-09-10 19:04:45

标签: c

this find out whether the given number is prime or not

这段代码有什么不对,它说数字3不是素数 数字3是素数然后是错误的 如果我把数字2作为输入,那么也是错误的

    #include<stdio.h>
    #include<math.h>
    void main()
    {
        int num,i,j,inum,flag=0;
        printf("\n Enter the number :");
        scanf("%d",&num);
        inum=sqrt(num);
        for(i=2;i<inum;i++)
        {
            if(num%i==0)
            {
                flag=0;
                break;
            }
            else
            {
                flag=1;
            }

        }
        if(flag)
        {
            printf("\n TThe number %d is prime",num);

        }
        else
        {
            printf("\n The number %d is not prime",num);
        }

    }

2 个答案:

答案 0 :(得分:2)

你的for循环应该改为

for(i=2;i<=inum;i++)

更清洁,更好的代码。

bool found = true;
for (i=2; i<=inum && found; ++i ) {
    if ( num%i == 0 ) found = false;
}

if ( found ) printf("Prime Number");
else printf("Not Prime");

答案 1 :(得分:0)

在此行int num,i,j,inum,flag=0;中,您需要执行int num,i,j,inum,flag=1;。好了,现在想想这个变化会发生什么。我认为现在你的代码没有给出错误的输出。

更新:只要想一想sqrt(N)范围内没有能够将N划分为(N % thatNumber == 0)的数字,那么它就是素数。因此旗帜应该是1个原因,我认为它的初始时间是一个素数。如果它不是素数,那么sqrt(N)范围内的数字可以将N除以(N % thatNumber == 0),并且此原因标志更改为0.