#include <bits/stdc++.h>//洛谷万能头文件 using namespace std; //质因数分解 //找出一个数的两个质数乘积 //输出两质数中比较大的那一个 //对于这种有多个条件且复杂的题目一定要想到用函数解决 bool fun(int n)//函数;当输入质数就返回true否则false,质数为只有1和它本身为因数的数 { if (n <= 1) {//注意特殊判定 return false; } for (int i = 2; i <= sqrt(n); i++) {//优化超过一个数的一半就不会出现因数所以优化i<n为i<n/2//还是超时就小于根号n if (n % i == 0) { return false; } } return true; } int main() { int n = 0; cin >> n; //首先遍历出n的因数 //利用bool函数筛选出是质数的因数 for (int i = 2; i <= n; i++) { if (n % i == 0)//如果i是n的因数 { if (fun(i) && fun(n / i))//利用上面的bool判断语句来判断 cout << n / i;//因为首先遍历到的因数一定是比较小的因数所以除出来的数是比较大的因数 break; } } } //提交代码会超时,要优化代码
洛谷质数因数分解
最新推荐文章于 2024-07-07 09:38:29 发布