| Run ID | 作者 | 问题 | 语言 | 测评结果 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|
| 84912 | bnu_fanmeijie | 质因数分解 | C++ | 通过 | 0 MS | 248 KB | 1032 | 2026-03-04 12:24:30 |
#include<bits/stdc++.h> using namespace std; int main() { int n; cin >> n; for(int i = 2; i*i <= n; ++i) { if(n%i == 0)//第一个找到的n的因数i,一定是n的两个质因数中较小的质因数 { cout << n/i << endl;//n / i就是n的两个质因数中较大的质因数 return 0; } } return 0; } /* 题目中给的数字n是两个质数的乘积,n的范围最大能达到 2^9 除非二者相等,其它情况下,都是一个较小的质数乘以一个较大的质数。其中较小的质数一定小于等于n \sqrt{n} 显然,搜索较小的质因数更容易。 因为数字n是两个质数的乘积,因而数字n只能整除这两个质数。 循环变量i从2开始不断增大,判断n是否能被i整除(i是否是n的因数),如果是,那么i就是n的两个质因数中较小的质因数。那么较大的质因数就是n / i。 ———————————————— */