HDU1164 Eddy's research I【素因子分解】
问题链接:HDU1164 Eddy's research I
问题描述:参见上文。
问题分析:这是一个整数因子分解问题。采用计算欧拉函数的基本思想进行分解,即从小因子开始逐步分解。
需要注意的是,对于需要分解的整数n,最后被分解到只剩下1时,不需要输出,即不输出1。
程序说明:(略)
AC的C语言程序如下:
#include <stdio.h>
#include <math.h>
// 欧拉函数法
void divide(int n)
{
int count = 0, i;
while(n%2 == 0) {
n /= 2;
if(++count == 1)
printf("2");
else
printf("*2");
}
for(i=3; i*i<=n; i+=2) {
if(n%i == 0) {
n /= i;
if(++count == 1)
printf("%d", i);
else
printf("*%d", i);
while(n%i == 0) {
n /= i;
printf("*%d", i);
}
}
}
if(n != 1) {
if(++count == 1)
printf("%d", n);
else
printf("*%d", n);
}
printf("\n");
}
int main(void)
{
int n;
while(scanf("%d", &n) != EOF)
divide(n);
return 0;
}
浙公网安备 33010602011771号