판단 프라임 기능, 판사는 숫자가 소수인지 왜 그 숫자 충분히 루트에 추가

다음 코드는 이해하기 어떻게 내가 <= 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>로, 계산을 많이 절약 할 수 있습니다.
따라서 여기서 효율적입니다.

출시 팔 개 원래 기사 · 원 찬양 8 · 전망 (206)

추천

출처blog.csdn.net/xzy15703841578/article/details/105264168