素数又称为质数,是指大于1的自然数除了其本身和1外没有其他因数。
判断一个数记为X是否为素数,最直接的思路是对从2开始一直到X-1的所有数进行判断是否为X的因数,如果一旦出现一个数为X因数则判断 X不是素数。
#include <stdio.h>
int prime(int x)
{
int i,flag=0;
if(x<2)
flag = 1; //判断x是否大于等于2,因为素数定义要求该数大于等于2
else
{
for(i=2;i<x;i++)
{
if(x%i==0)
{
flag=1;
break;
}
}
}
if(flag==1)
{
return 0;
}
return 1; //返回1代表该数为素数
}
int main()
{
int x;
scanf("%d",&x);
if(prime(x))
{
printf("%d为素数\n",x);
}
else
{
printf("%d不为素数\n",x);
}
return 0;
}
这种方法的时间复杂性较高,
事实上对于n(n>=2)如果从2到sqrt(n)之间的所有整数去除,均无法整除,则n为素数。
#include <stdio.h>
#include <math.h>
int prime(int x)
{
int i,flag=0;
if(x<2)
flag = 1; //判断x是否大于等于2,因为素数定义要求该数大于等于2
else
{
for(i=2;i<=sqrt(x);i++)
{
if(x%i==0)
{
flag=1;
break;
}
}
}
if(flag==1)
{
return 0;
}
return 1; //返回1代表该数为素数
}
int main()
{
int x;
scanf("%d",&x);
if(prime(x))
{
printf("%d为素数\n",x);
}
else
{
printf("%d不为素数\n",x);
}
return 0;
}