uva 10892

时间:2023-03-09 08:15:50
uva 10892

试了一下纯暴力  结果过了 无话可说  应该有更好的方法......

/*************************************************************************
> Author: xlc2845 > Mail: xlc2845@gmail.com
> Created Time: 2013年10月26日 星期六 10时15分23秒
************************************************************************/ #include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <vector>
#include <cstring>
#include <algorithm>
#define maxn 210
#define INF 0x7fffffff
#define longlong LL
using namespace std; int gcd(int a, int b)
{
return b == 0 ? a : gcd(b, a%b);
} int lcm(int a, int b)
{
return a / gcd(a, b)*b;
} int n, a[1000000], k, ans; int main()
{
while(scanf("%d",&n) && n)
{
k = ans = 0;
for(int i = 1; i <= sqrt(n+0.1); i++)
{
if(n%i == 0)
{
a[k++] = i;
a[k++] = n/i;
}
}
if(a[k-1] == a[k-2]) //不能少
k--;
for(int i = 0; i < k; i++)
for(int j = i; j < k; j++)
if(lcm(a[i], a[j]) == n)
ans++;
printf("%d %d\n", n, ans);
}
return 0;
}