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