素数表

素数表

原理:合数一定能够拆分成几个素数的乘积,可以利用这个性质列出素数表。

 

 

例题:输出0到一个数(输入的数)的素数表。

 

 

分析:只要一个数和所有比它小的素数相除,余数都不为0,那么这个数就是素数,利用已求出的素数表判断可以减少判断时间。

 

 

代码:

#include<stdio.h>

int num=0,a[10000]={2};  // 使用数组储存已经发现的素数

void panduan(int n); 

int main()

{

    int count,i;

    printf("Input the number:");

    scanf("%d",&count);

    panduan(count);

    for(i=0;i<=num;i++)

    {

       printf("%4d ",a[i]);    //打印素数表

    }

    return 0;

}

void panduan(int n)    //判断是否是素数

{

    int i,j,flag=0;

    for(i=2;i<=n;i++)

    {

       for(j=0;j<=num;j++)

       {

           if(i%a[j]==0)

           {

              flag=0;   //利用标志变量flag来标记该数是否是素数

              break;    //flag为0,不是素数

           } 

           else

           {

              flag=1;  //flag为1,是素数

           }

       }

       if(flag==1)

       {

           num=num+1;  //把素数储存到数组中

           a[num]=i;

           flag=0;

       }

    }

}

 

结果示例:

posted on 2018-01-20 23:01  再找找孤独  阅读(309)  评论(0)    收藏  举报

导航