1. 程式人生 > >求一個整數的所有因子

求一個整數的所有因子

#include<iostream>#include<cmath>#include<cstdio>#include<cstdlib>using namespace std;typedef long long ll;const int Max_N=100000;int main(){ ll n; int num=0; ll a[Max_N]; scanf("%lld",&n); for(ll i=2;i*i<=n;i++) { while(n%i==0) { a
[num++]=i; n/=i; } } if(n>1) a[num++]=n; for(int i=0;i<num;i++) printf("%lld\n",a[i]); return 0;

}

1.輸入一個整數n,求它的所有因子,則從2開始逐個查詢。

2.找到一個因子x就將其儲存並將n除以x直到新的n'中不包含因子x,然後對n'重複 1 操作。

例:n=2*3*5*7*11*13

每次從n中找最小因子,找到2後,n'=3*5*7*11*13,再找n'中最小因子3,依次類推。

可知最後n'就等於n的最大因子,直接儲存。