打印本文 打印本文  关闭窗口 关闭窗口  
C趣味程序百例(09)求素数
作者:佚名  文章来源:不详  点击数  更新时间:2008/4/18 13:59:22  文章录入:杜斌  责任编辑:杜斌

30.求素数
    求素数表中1~1000之间的所有素数
*问题分析与算法设计
    素数就是仅能衩1和它自身整除的整数。判定一个整数n是否为素数就是要判定整数n能否被除1和它自身之外的任意整数整除,若都不能整除,则n为素数。
    程序设计时i可以从2开始,到该整数n的1/2为止,用i依次去除需要判定的整数,只要存在可以整除该数的情况,即可确定要判断的整数不是素数,否则是素数。
*程序与程序注释
#include<stdio.h>
void main()
{
    int n1,nm,i,j,flag,count=0;
    do{
        printf("Input START and END=?");
        scanf("%d%d",&n1,&nm);           /*输入求素数的范围*/
    }while(!(n1>0&&n1<nm));               /*输入正确的范围*/
    printf("...........PRIME TABLE(%d--%d)............\n",n1,nm);
    if(n1==1||n1==2)                  /*处理素数2*/
    {
        printf("%4d",2);
        n1=3;count++;
    }
    for(i=n1;i<=nm;i++)              /*判定指定范围内的整数是否为素数*/
    {
        if(!(i%2))continue;
        for(flag=1,j=3;flag&&j<i/2;j+=2)
                                    /*判定能否被从3到整数的一半中的某一数所整除*/
            if(!(i%j))flag=0;       /*若能整除则不是素数*/
        if(flag) printf(++count%15?"%4d":"%4d\n",i);
    }
}
*运行结果
Input START and END=?1 1000


*思考题       
    请找出十个最小的连续自然数,它们个个都是合数(非素数)
打印本文 打印本文  关闭窗口 关闭窗口