素数又称质数。所谓素数是指除了 1 和它本身以外,不能被任何整数整除的数,例如7就是素数,因为它不能被 2~6 的任一整数整除。注意:一般情况下,质数合数只是针对于非零自然数而言,负数没有质数合数一说。
思路1:因此判断一个整数m是否是素数,只需把 m 被 2 ~ m-1 之间的每一个整数去除,如果都不能被整除,那么 m 就是一个素数。
思路2:判断方法还可以简化。m 不必被 2 ~ m-1 之间的每一个整数去除,只需被 2 ~ 之间的每一个整数去除就可以了。如果 m 不能被 2 ~
间任一整数整除,m 必定是素数。例如判别 17 是是否为素数,只需使 17 被 2~4 之间的每一个整数去除,由于都不能整除,可以判定 17 是素数。
话不多说代码如下:
思路1代码:
#include<stdio.h>
#include<math.h>
int isprime(int a)
{
int count=0;
if(a<=1)
return 0;
else
{
for(int i=2; i<a; i++)
{
if(a%i==0)
count++;
}
}
if(count==0)
return 1;
else
return 0;
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
if(isprime(n))
printf("该数是质数\n");
else
printf("该数不是质数\n");
}
return 0;
}
思路2代码:
#include<stdio.h>
#include<math.h>
int isprime(int a)
{
int count=0;
if(a<=1)
return 0;
else
{
for(int i=2; i<=(int)sqrt(a); i++)
{
if(a%i==0)
count++;
}
}
if(count==0)
return 1;
else
return 0;
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
if(isprime(n))
printf("该数是质数\n");
else
printf("该数不是质数\n");
}
return 0;
}
两次运行结果一样: