快速判断1e4以内正整数是否为素数

    技术2024-10-11  56

    理论基础:一个合数一定有一个素因子 <= sqrt(n) 。 证明: 一个合数n肯定有素因子,并且在[2,n-1]上。若有一个素因子x大于等于sqrt(n),就必然有一个因子n/x小于等于sqrt(n),而n/x必有一个素因子小于等于sqrt(n) ,而n/x的素因子也是n的素因子。

    已知:n <= 1e4。 代码如下:

    #include <iostream> #include <algorithm> #include <cmath> using namespace std; int a[26] = {2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101}; int main(){ int n; cin >> n;//n <= 1e4 int m = sqrt(n); int flag = 0; for(int i = 0;i<26&&i <= m;i++){ if(n%i == 0){ flag = 1; break; } } if(!flag) cout << "Yes" << endl; else cout << "No" << endl; return 0; }
    Processed: 0.013, SQL: 9