1. 程式人生 > >1233 編寫函式:素數的判定 (Append Code)

1233 編寫函式:素數的判定 (Append Code)

Description

一個正整數n是素數:除了1和n不能被其他數整除。1不是素數。

編寫一個函式用於判定一個正整數是不是素數。

用C語言實現:append.c中函式原型為

int is_primer(int num);

功能:若num為素數返回1,否則返回0。

用C++實現:append.cc中函式原型為

bool isPrimer(int num);

功能:若num為素數返回true,否則返回false。

函式的呼叫格式見“Append Code”。

Input

每行輸入一個正整數n。

n不會超出int型別資料範圍。

輸入最多不超過20個正整數。

Output

若n為素數,輸出“YES”,否則輸出“NO”。

Sample Input

1 2 3 4 5 6 7 8 9 2147483647

Sample Output

NO YES YES NO YES NO YES NO NO YES

HINT

如果你是按照從小到大的順序選擇除數去判定一個數,那麼你超時的原因多半是用了太多不必要的除數。程式需要優化,減少迴圈的次數。

Append Code

append.c

int main()
{
    int num;
    while(scanf("%d", &num) != EOF)
    {
        if(is_primer(num))
            puts("YES");
        else
            puts("NO");
    }
    return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int is_primer(int num)
{
    int i,j=0;
    if(num==1)
        return 0;
    else
    {
        for(i=sqrt(num);i>1;i--)
        {
            if(num%i==0)
            {
                j++;
                return 0;
                break;
            }
        }
        if(j==0)
            return 1;
    }
}