题目链接:
思路:每一个数都可以表示成若干个素数的乘积,那么可以对N从2一直枚举到sqrt(N),然后对每个数都能除到不能取余为止,那么后面的合数就不会除了,所以最后得到的数就是最大的质因子,然后直接N/最大的质因子,还有就是N=1的时候没有存在的数 。
题目:
3 4 5 6
1 2 1 2
#include<cstdio>
#include<vector>
#include<iostream>
#include<algorithm>
using namespace std;
vector<int>ans;
int n;
int main()
{
while(~scanf("%d",&n))
{
int k=n;
ans.clear();
if(n==1) printf("0\n");
else
{
for(int i=2;i*i<=n;i++)
{
while(n%i==0)
{
ans.push_back(i);
n=n/i;
}
}
if(n!=1) ans.push_back(n);
sort(ans.begin(),ans.end());
printf("%d\n",k/ans.back());
}
}
return 0;
}
hdu5108Alexandra and Prime Numbers(素数的性质)
原文:http://blog.csdn.net/u014303647/article/details/41390709