uva 10006 Carmichael Numbers(快速幂)
2013-10-19 23:33
507 查看
题目链接:uva 10006 Carmichael Numbers
题目大意:判断一个数是否为Carmichael数, (非素数, 并且满足a^n % n == a, a 的取值为2 ~ n - 1)。
解题思路:Eratosthenes筛选法求出素数,然后对应n如果为非素数,就对每个a进行判断,中间用到快速幂。
题目大意:判断一个数是否为Carmichael数, (非素数, 并且满足a^n % n == a, a 的取值为2 ~ n - 1)。
解题思路:Eratosthenes筛选法求出素数,然后对应n如果为非素数,就对每个a进行判断,中间用到快速幂。
#include <stdio.h> #include <string.h> const int N = 65005; int n, prime ; void init() { memset(prime, 0, sizeof(prime)); prime[0] = prime[1] = 1; for (int i = 2; i < N; i++) for (int j = i * 2; j < N; j += i) prime[j] = 1; } long long count(int a, int c) { if (c == 1) return a; long long p = count(a, c / 2); p = p * p; if (c % 2) p *= a; return p % n; } bool judge(int n) { if (!prime ) return false; for (int i = 2; i < n; i++) if (count(i, n) != i) return false; return true; } int main () { init(); while (scanf("%d", &n) && n) { if (judge(n)) printf("The number %d is a Carmichael number.\n", n); else printf("%d is normal.\n", n); } return 0; }
相关文章推荐
- 快速幂--uva10006
- UVA 10006 - Carmichael Numbers(快速幂取模)
- Uva 10006 Carmichael Numbers(数论、快速幂、素数筛法)
- UVa 10006 Carmichael Numbers 【快速幂+素数打表(埃氏筛法)】
- UVA 10006 - Carmichael Numbers(快速幂取模)
- 【素数 && 快速幂】UVA - 10006 Carmichael Numbers
- UVA10006 快速幂
- UVA 10006 - Carmichael Numbers 快速幂
- Uva 10006 Carmichael Numbers (快速幂)
- UVA 10006 - Carmichael Numbers 快速幂
- UVa 10006 Carmichael Numbers (快速幂 + 素性测试)
- UVA 10006 Carmichael Numbers(快速幂取模)
- UVA 10006 Carimichael Numbers(快速幂)
- Uva 10006-Carmichael Numbers(快速幂)
- UVA 10006 - Carmichael Numbers 数论(快速幂取模 + 筛法求素数)
- UVA - 10006 Carmichael Numbers - 快速幂
- 快速幂取模 例题uva10006
- Uva 10006 Carmichael Numbers 快速幂
- Uva 10006 - Carmichael Numbers【素数+快速幂取模】
- uva 10006 快速幂