天天看点

求1~1000的质数(素数)

题目:求1~1000的质数(素数)

思路:素数、即质数,是在大于1的整数中只能被1和其自身整除的数。检查一个正整数N是否为素数,最简单的方法就是试除法,将该数N用小于等于根号N的所有素数去试除,若均无法整除,则N为素数。

代码:

#include <stdio.h>
#include <math.h>

#define MAXSIZE 1000

int main()
{
    int prime[500];
    int size = 0;
    int index = 0;
    int isGet = 0;
    int sqrt_value = 0;
    int prime_index = 0;

    printf("1~1000的素数: ");
    prime[0] = 2;
    prime[1] = 3;
    size = 2;
    index = 4;

    for(;index < MAXSIZE;index ++)
    {
        sqrt_value = sqrt(index);

        prime_index = 0;
        isGet = 1;
        while((prime_index < size)&& (prime[prime_index] <= sqrt_value))
        {
            if(index % prime[prime_index] == 0)
            {
                isGet = 0;
                break;
            }
            prime_index ++;
        }
        if(isGet == 1)
        {

            prime[size] = index;
            size ++;
        }
    }

    for(prime_index = 0;prime_index < size;prime_index++)
    {
        printf("%d ",prime[prime_index]);
    }
    printf("\n共%d个.\n",size);
    return 0;
}
           

继续阅读