质因素分解练习题。
题目大意:给出一个数N,求一个最小的正整数M,使 N / M 为素数。附链接:http://acm.hdu.edu.cn/showproblem.php?pid=5108。
大体思路:这道题,反过来想一下,既是求关于 N 的最大的质因素 maxn,使 N / maxn 最小。
以下为ac的代码:
#include<stdio.h>
#include<iostream>
using namespace std;
int main(){
int n;
while(~scanf("%d",&n)){
if(n==1){
printf("0\n");
continue;
}
int maxn=0;
int x=n;
for(int i=2;i*i<=n;i++){
if(x%i==0){
maxn=max(maxn,i);
while(x%i==0)
x/=i;
}
}
maxn=max(maxn,x);
printf("%d\n",n/maxn);
}
}