从小到大寻找第一个因子,利用两个不同质因子的乘积性质得到较大质数。
OJ: noi_openjudge
题目 ID: ch0105-43
难度:普及-
标签:数学枚举质数python
日期: 2026-07-30 23:01
题意
已知正整数
思路
从 number // divisor 就是答案。
只需检查到 divisor * divisor <= number;若两个因子都大于平方根,它们的乘积会超过
代码
Python代码
python
number = int(input())
divisor = 2
while divisor * divisor <= number:
if number % divisor == 0:
print(number // divisor)
break
divisor += 1C++代码
cpp
#include <cstdio>
#include <cmath>
bool is_prime(int n){
int i;
for(i=2;i<=(int)sqrt(n);i++ ){
if( n % i ==0)
return 0;
}
return 1;
}
int main(){
int n;
scanf("%d",&n);
int i;
for (i=1;i<=n;i++){
if( n % i == 0 && is_prime(i)){
int a = n / i;
if( is_prime(a)){
printf("%d\n",a);
return 0;
}
}
}
return 0;
}复杂度
最坏情况下枚举到
总结
已知乘积结构时,找到一边的因子就能用整除立即得到另一边。