找一个素数n的乘积组合
范围2~sqrt(n)
证明:
假设素数n存在sqrt(n)~n的数a,有n=a*b,则b范围是2~sqrt(n), 即b已经在前面通过对范围2~sqrt(n)的遍历中得到,所以a>sqrt(n)的情况已经考虑到了,不必再增加遍历的范围
#include<iostream> using namespace std; int main() { int n; while(cin >> n){ int i; for(i=2; i*i<=n; i++){ if(n%i==0){ n=n/i; cout << i << "*"; i=1; } } cout << n << endl; } }
原文:https://www.cnblogs.com/ZGCblogs/p/14188337.html