理论基础:一个合数一定有一个素因子 <= 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
;
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;
}
转载请注明原文地址:https://ipadbbs.8miu.com/read-52133.html