UVa10006 - Carmichael Numbers

来源:互联网 发布:2017网络洗脑神曲 编辑:程序博客网 时间:2024/05/18 16:58
#include <stdio.h>#define MAX 65010int prime[MAX];int is_prime(int  a);long long big_mod(int a, int n, int m);int is_ok(int n);int main(){    int i, n;    #ifndef ONLINE_JUDGE        freopen("d:\\UVa\\uva_in.txt", "r", stdin);    #endif    for (i = 2; i < MAX; i++)    {        prime[i] = is_prime(i);    }    while (scanf("%d", &n) && (n != 0))    {        if (!prime[n] && is_ok(n))            printf("The number %d is a Carmichael number.\n", n);        else            printf("%d is normal.\n", n);    }    return 0;}int is_prime(int a){    int i;    for (i = 2; i * i <= a; i++)    {        if (a % i == 0)            return 0;    }    return 1;}long long  big_mod(int a, int n, int m){    long long x;    if (n == 0)        return 1;    else if (n % 2)    {        return (a * big_mod(a, n - 1, m) % m);    }    else    {        x = big_mod(a, n / 2, m);        return (x * x % m);    }}int is_ok(int n){    int i;    for (i = 2; i < n; i++)    {        if (big_mod(i, n, n) != i)            return 0;    }    return 1;}

原创粉丝点击