检查数字是否为素数(C) [英] check if number is prime (C)

查看:101
本文介绍了检查数字是否为素数(C)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望用户输入数字并检查该号码是否为素数



但是我的代码显示错误结果所以我的代码有什么问题

i知道我错过了什么但不知道它



 #include< stdio.h> 
#include< conio.h>
int main()
{
int num,i, isPrime = 0 ;
clrscr();
printf( 请输入您检查的数字\ n);
scanf( %d,& num);
if (num < = 1
printf( 数字%d不是素数,num) ;
else if (num == 1
printf( 数字%d不是素数,num) ;
else if (num == 2
printf( 数字%d是素数,num);
其他 {
for (i = 3 ; i * i< = num; i ++)
{
if (num%i == 0
{
isPrime = 0 ;
break ;
}


}
如果(isPrime == 0
printf( 数字%d为素数, NUM);
else
printf( 数字%d不是素数,num);
}
getch();
return 0 ;
}

解决方案

你应该用 isPrime >非零值,更改自:

Quote:

int num,i,isPrime = 0;

to

  int  num,i,isPrime =  1 ; 







[update]

还有其他两个错误。

来自:

引用:

for(i = 3; i * i< = num; i ++)

to

  for ( i =  2 ; i * i< = num; i ++)





来自

Quote:

if(isPrime == 0)

to

  if (isPrime ==  1 



[/ update]


除了CPallini的解决方案,当num为1时还有一个错误。



改变这个:



  if (num< =  1 





......这个...



  if (num<  1 


i want user to enter number and check if that number is prime or not

but my code show wrong result so what is wrong with my code
i know that i missed thing but do not know it

#include<stdio.h>
#include<conio.h>
int main()
    {
      int num,i,isPrime=0;
      clrscr();
      printf("please enter the number you check prime \n");
      scanf("%d",&num);
      if(num <= 1)
       printf("the number %d is not prime",num);
     else if(num == 1)
       printf("the number %d is not prime",num);
     else if(num == 2)
       printf("the number %d is prime",num);
      else{
       for(i=3;i*i<= num ;i++)
       {
         if(num % i == 0)
          {
            isPrime= 0;
            break;
          }


       }
       if( isPrime == 0)
            printf("the number %d is  prime",num);
        else
           printf("the number %d is not prime",num);
       }
       getch();
      return 0;
    }

解决方案

You should initialize isPrime with a non-zero value, change from:

Quote:

int num,i,isPrime=0;

to

int num,i,isPrime=1;




[update]
There are other two errors.
Change from:

Quote:

for(i=3;i*i<= num ;i++)

to

for(i=2;i*i<= num ;i++)



and from

Quote:

if( isPrime == 0)

to

if( isPrime == 1)


[/update]


In addition to CPallini's solution, there's a bug when num is 1.

Change this:

if(num <= 1)



... to this ...

if(num < 1)


这篇关于检查数字是否为素数(C)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆