51nod 1106 質數檢測

2022-04-27 11:27:07 字數 1440 閱讀 2458

1106 質數檢測

基準時間限制:1 秒 空間限制:131072 kb 分值: 0 難度:基礎題

收藏關注給出n個正整數,檢測每個數是否為質數。如果是,輸出"yes",否則輸出"no"。

input

第1行:乙個數n,表示正整數的數量。(1 <= n <= 1000)

第2 - n + 1行:每行1個數(2 <= s[i] <= 10^9)

output

輸出共n行,每行為 yes 或 no。
input示例

523456

output示例

yes

yesno

yesno

素數測試,此處提供兩種**

1、素數測試:

#include#includeint modularexponent(int a, int b, int n) 

} return ret;

}bool millerrabin(int n,int a)

int r = 0, s = n - 1, j;

if(!(n%a)) return false;

while(!(s&1))

long long k = modularexponent(a, s, n);

if(k == 1) return true;

for(j = 0; j < r; j++, k = k * k % n)

if(k == n - 1) return true;

return false;

}bool miller_rabin(int n)//

,i;//能通過測試的最小素數為 3215031751(此數超int)

for(i=0;i<4;i++)

return true;

}int main()

return 0;

}

2、大神**

#include #include #define  maxp 31627

char flag[maxp+1];

int prime[4000];

int count = 0;

void init_ptbl()

for( i = 3; i <= maxp; i += 2 ) if( flag[i] == 0 ) prime[count++] = i;

}int main()

e = (int)sqrt( x ) + 1;

for( i = 1; prime[i] <= e; ++i ) if( x % prime[i] == 0 ) break;

puts( prime[i] <= e ? "no" : "yes" );

} return 0;

}

51nod 1106 質數檢測

傳送門 1106 質數檢測 根據質數的定義,在判斷乙個數n是否是質數時,我們只要用1至n 1去除n,看看能否整除即可。但我們有更好的辦法。先找乙個數m,使m的平方大於n,再用 m的質數去除n n即為被除數 如果都不能整除,則n必然是質數。如我們要判斷1993是不是質數,50 50 1993,那麼我們...

51Nod 1106 質數檢測

1106 質數檢測 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 收藏 關注 給出n個正整數,檢測每個數是否為質數。如果是,輸出 yes 否則輸出 no input 第1行 乙個數n,表示正整數的數量。1 n 1000 第2 n 1行 每行1個數 2 s i 10 9 ...

51nod 1106 質數檢測

給出n個正整數,檢測每個數是否為質數。如果是,輸出 yes 否則輸出 no input第1行 乙個數n,表示正整數的數量。1 n 1000 第2 n 1行 每行1個數 2 sii 10 9 output輸出共n行,每行為 yes 或 no。sample input 523 456sample out...