题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5108
输入N,找一个最小的M,使得N/M为质数。
解题思路:面对N/M的问题,而且还是质数问题,可以想到是用分解质因数了,因为N = M*P,P为质数,所以分解N的质因数直到一个最大的P出现即可。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
void primeFactor(int n)
{
int m = n, x = 0;
for(int i = 2; i * i <= n; i++)
{
if(n % i == 0)
while(n % i == 0)
n /= i;
x = max(x,i);
}
if(n > 1) x = max(x,n);
printf("%d\n",x ? m / x : 0);
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
primeFactor(n);
}
return 0;
}