1233 編寫函式:素數的判定 (Append Code)
阿新 • • 發佈:2018-12-20
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; } }