首页 > 代码库 > 判断一个数是否是质数

判断一个数是否是质数

#include<stdio.h>
int main()
{
   int i,n;
   scanf("%d",&n);
   if(n<=1)          //当输入的数小于等于1时,可直接判定为不是质数,不输出结果
   {
    return 0;
   }
   else
   {
      for(i=2;i<n;i++)    //建立一个for循环,并令i=2
      {
         if(n%i==0)
         {
            break;    //如果输入的整数n能够整除i,跳出循环
         }
      }
      if(i==n)             

     {
         printf("yes\n");    //跳出循环后,如果i+1=n,那么说明n只能整除1和它本身,输出“yes”
      }
      else
      {
         printf("no\n");  //如果不是,则说明n还有其他除数,则n不为质数,输出“no”
      }
   }
 return 0;
}

 

 

  这样的代码太过复杂,数学老师会告诉我们当判断一个质数时,只需要检查到根号n就可以了,我们可以简化代码,让它变成如下情况:

#include<stdio.h>
#include<math.h>    //在这里,我们需要用到math来使用数学符号
int main()
{
  int i,n,t;
   scanf("%d",&n);
   t=sqrt(n);      //sqrt表示开根号的意思,t=根号n
   for(i=2;i<=t;i++)
   {
  
      if(t%i==0) break;  //当t求i的余数等于0时,退出循环
   }
   if(i>t)        //如果i>t,说明是因为没有等于0的余数,i的值超过了t的值而跳出循环,所以n是质数
   {
      printf("yes\n");
   }
   else        //如果不是,则说明是因为有等于0的余数才退出的循环,所以n不是质数
   {
      printf("no\n");
   }
   return 0;
}

判断一个数是否是质数