다음 코드는 이해하기 어떻게 내가 <= SQRT (x)를 너무!
#include<bits/stdc++.h>//万能头文件,拿走不谢。
using namespace std;
bool isprime(int x) {
if(x == 1)
return false;
for(int i = 2; i <= sqrt(x); i++)//是因为不是素数,必然是合数,合数必然是除1和本身之外的两个数相乘。
if(x % i == 0) return false;
return true;
}
int main() {
int n;
cin >> n;
for(int i = 0; i < n; i++) {
int b;
cin >> b;
printf("%s\n", isprime(b) ? "Yes" : "No");
}
return 0;
}
16 우리 다음은이 숫자, 예를 들어, 다음 조작 |
---|
(16)는 합성 수있다 (도 1과 서로 소 나눌 수있는 것보다 다른 이들에 추가되는)
16 인자 1 및 2 인자로서 기록 될 수있는 두 가지 인자를 곱함으로써 얻어진다. (예 : 보라색 단어의 일부로서)
숫자 = 16 = 2 * 16 * 8 = 16 개 비디오 하에서 6 3 * 4 * 4 = 붉은 유화는, 비교적 작은 요인 계수는 항상 1 이상의 16의 제곱근과 동일하다.
이것의 장점 |
---|
2에서 그것은 소수로 나눌 수 없다는 것을 증명할 수있는 한 요인 1을 선별이있는 한, 소수 심사 시작합니다. 이것은 당신이 소수이며, 따라서 직접 다운 100-10000에서 여부를 결정할 수 있습니다 더 백주기보다는했다, 같은 번호 10000>로, 계산을 많이 절약 할 수 있습니다.
따라서 여기서 효율적입니다.