素数

来源:互联网 发布:三菱plc手持编程器 编辑:程序博客网 时间:2024/06/11 11:25

定义;一个大于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;}

三、ACM中常用的筛法求素数

http://blog.csdn.net/ac__go/article/details/78349348

原创粉丝点击