天天看點

求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;
}
           

繼續閱讀