#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的最大因子,直接保存。
求一个整数的所有因子
最新推荐文章于 2025-08-07 07:00:00 发布

344

被折叠的 条评论
为什么被折叠?



