あまりにもどのように私は、<= 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からできました。
したがって、どこ効率的。