求一个整数的所有因子

来源:互联网 发布:fifaonline3数据库最新 编辑:程序博客网 时间:2024/05/02 01:21
#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的最大因子,直接保存。

0 0
原创粉丝点击