#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cmath>
#define OUT freopen("out.txt", "w", stdout)
using namespace std;
const int maxn = 1e5 + 10;
bool isprime[maxn];
int prime[maxn], primecnt;
void init() {
memset(isprime, true, sizeof(isprime));
primecnt = 0;
for (int i = 2; i < maxn; i++) {
if (isprime[i]) {
prime[++primecnt] = i;
for (int j = i * 2; j < maxn; j += i) isprime[j] = false;
}
}
}
int p[maxn], cnt;
void breakdown(int x) {
cnt = 0;
for (int i = 1; i <= primecnt && x > 1; i++) {
if (x % prime[i]) continue;
++cnt;
while (x % prime[i] == 0 && x > 1) {
p[cnt]++;
x /= prime[i];
}
}
if (x > 1) p[++cnt] = 1;
}
int main() {
//OUT;
init();
int n;
while (~scanf("%d", &n) && n) {
memset(p, 0, sizeof(p));
breakdown(n);
long long ans = 1;
for (int i = 1; i <= cnt; i++) {
ans *= (long long)2 * p[i] + 1;
}
ans = (ans + 1) / 2;
printf("%d %lld\n", n, ans);
}
return 0;
}
UVA 10892 LCM Cardinality——质因分解
原创
©著作权归作者所有:来自51CTO博客作者软糖酱八号机的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Alternate Task UVA - 11728 (暴力。。分解质因子)
题意: 输入一个正整数S,(S <= 1000)求一个最大的正整数N,使得N的所有正因子之和为S。 解析: 。。求1000以内的所有数的正因子和 。。。输出。。
#include #define ios i++ 数据 i