Следующий код, чтобы понять, как это я <= SQRT (х) тоже!
#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 фактора. (Такие, как фиолетовая словесная часть)
6 3 * 4 * 4 = красная картина под номером 1 = 16 = 2 * 16 * 8 = 16 видео являются относительно небольшого фактора, что фактор всегда меньше 1, равен квадратный корень из 16.
Преимущество этого |
---|
От 2 до запуска скрининга простых чисел, до тех пор , пока существует скрининг фактор 1 может доказать , что он не может делится на простое число. Это экономит много вычислений, таких как> 10000 числа, вы были более чем сто циклов может определить , является ли это простое число, и , таким образом , непосредственно до 100 из 10000.
Таким образом , где эффективно.