数が、なぜその数に十分な長さのルートに加えて、素数であるかどうかの判断、裁判官で首相機能

あまりにもどのように私は、<= 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因子のように書くことができる2つの因子を乗算することによって得られます。(このような紫ワード一部として)

数1 = 16 = 2 * 16 * 8 = 16ビデオ下6は、3×4×4 =赤絵は、比較的小さな因子である因子は、常に1未満であり、16の平方根に等しいです。

この利点

2から、それが素数で割り切れなかったことを証明できる限り、因子1のスクリーニングがあるとして、素数をスクリーニング開始します。これは、このような>番号10000として、計算の節約、あなたは百以上のサイクルは、それが素数であるかどうかを判断するため、直接ダウン100から10000からできました。
したがって、どこ効率的。

リリース8元の記事 ウォンの賞賛8 ビュー206

おすすめ

転載: blog.csdn.net/xzy15703841578/article/details/105264168