求一个整数的所有因子

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Mtrix/article/details/47125103
#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的最大因子,直接保存。

展开阅读全文

没有更多推荐了,返回首页