最大质因数
内存限制:128 MB时间限制:10.000 S
题目描述
13195的所有质因数为5、7、13和29。
那么,n的最大的质因数是多少?
输入
一个整数n(n<)
输出
一行,一个整数表示n的最大质因数
样例输入
13195
样例输出
29
思路分析
从小到大,找出n的所有质因数。每找到一个质因数i,就记ans=i,并while循环n/i直至n不能整除i。
如果以上操作结束后,n>1,此时的n就是要求的最大质因数。
代码
cpp
#include<bits/stdc++.h>
#define ll unsigned long long
using namespace std;
ll n,ans;
int main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>n;
for(ll i=2;i*i<=n;i++){
while(n%i==0){
ans=i;
n/=i;
}
}
if(n>1){
ans=n;
}
cout<<ans;
return 0;
}
(如果先处理因子2,再循环处理奇数因子,会快一点)
cpp
#include<bits/stdc++.h>
#define ll unsigned long long
using namespace std;
ll n,ans;
int main() {
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>n;
while(n%2==0){
ans=2;
n/=2;
}
for(ll i=3;i*i<=n;i+=2){
while(n%i==0){
ans=i;
n/=i;
}
}
if(n>1){
ans=n;
}
cout<<ans;
return 0;
}