定义;一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,换句话说就是该数除了1和它本身以外不再有其他的因数;否则称为合数
一、按定义直接求素数
#include <stdio.h>
int main()
{
int i,j,n,flag=0;
scanf("%d",&n);
for(i=2;i<=n;i++)
{
for(j=2;j<i;j++)
if(i%j==0)
break;
if(j==i)
{
printf("%d\n",i);
flag=1;
}
}
if(!flag)
printf("no\n");
return 0;
}
二、优化求素数
比如一个数n,可以看做由因子1*因子2的方式组成,我们让因子1是<=√n的,因子2是>√n的(如果两个因子都大于√n那么相乘之后结果就大于n了),我们要判断这个数是否存在因子1是该数除了1和它本身以外的因数就可以啦
#include <stdio.h>
#include <math.h>
int main()
{
int i,j,n,flag=0;
scanf("%d",&n);
for(i=2;i<=n;i++)
{
int m=sqrt(i);
for(j=2;j<=m;j++)
if(i%j==0)
break;
if(j==m+1)
{
printf("%d\n",i);
flag=1;
}
}
if(!flag)
printf("no\n");
return 0;
}