本文主要是介绍hdu 1405 The Last Practice(数论:欧拉函数的变形),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一遇到求素数就用欧拉函数或者其变形,简直爽死了
不过生成素数表应该更快,但是不喜欢那个代码
这道题的输出简直是大坑
不仅样例之间要有换行
每个样例中的输出数字后面都要有个空格,凭着刷题的直觉我只在数字中间保留空格
结果就presentation erroe
坑死了
0ms AC代码如下:
#include <math.h>
#include <stdio.h>
#define MAXN 100
struct Num {int i, j;
}a[MAXN];int cas = 1;int euler_phi(int n) {int m = sqrt(n+0.5);int i, c=0, cnt;for(i=2; i<=m; ++i) {if(n%i == 0) {a[c].i = i;n /= i;cnt = 1;while(n%i == 0) {n /= i;cnt++;}a[c++].j = cnt;}}if(n > 1) {a[c].i = n;a[c++].j = 1;}return c;
}int main(void) {int c, n, i;while(scanf("%d", &n), n>=0) {c = euler_phi(n);if(cas > 1)printf("\n");printf("Case %d.\n", cas++);for(i=0; i<c; ++i) {printf("%d %d ", a[i].i, a[i].j);}printf("\n");}return 0;
}
这篇关于hdu 1405 The Last Practice(数论:欧拉函数的变形)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!