求素数

来源:互联网 发布:费用优化例题 编辑:程序博客网 时间:2024/05/17 04:54

求素数

Time Limit: 100ms   Memory limit: 65536K  有疑问?点这里^_^

题目描述

 

求小于n的所有素数的数量。

输入

 

多组输入,输入整数n(n<1000000),以0结束。

输出

 

输出n以内所有素数的个数。

示例输入

100

示例输出

4

提示

 

来源

zp

示例程序

 
#include <stdio.h>     #include <math.h>         #define SIZE 1000000         int Prime[SIZE];        void JudgePrime();          int main()    {        int n;        int i;        int sum;            JudgePrime();          while (scanf("%d", &n))        {            if (n == 0)            {                break;            }                if (n <= 2)            {                printf("0\n");                continue;            }                sum = 0;            for (i=2; i<n; i++)            {                if (Prime[i] == 1)                {                    sum++;             }            }            printf("%d\n", sum);        }        return 0;    }        void JudgePrime()    {        Prime[0] = 0;        Prime[1] = 0;        int i, j;        for (i=2; i<SIZE; i++)        {            Prime[i] = 1;        }            for (i=2; i<SIZE; i++)        {            if (Prime[i] == 1)            {                for (j=i*2; j<SIZE; j+=i)                {                    Prime[j] = 0;                }            }        }    } 

0 0