느낀 및 명 ¶
단 면 되기 때문 FactorialFactors 던 고리 단 록 다.
그리고 CarmichaelNumbers가 뭔 몰라.. 뒤본 결과 3개 던 관로 그 부 가 다.
막로.. 면 로 나나는 변기 과류 가..
가를 달래기 .. 그 굴리 녹 돌가는 머리를 굴려 동..
가가 는 기 가 나머로 나록 다. 다 범가 들 범 끝났다고나 까..
대 느려긴 겠만 뭐.. 범가 관로 력면 바로바로 나는 ~! 그래 로 경는 다.
면 려나.. 그럼 루!!^^*
그리고 CarmichaelNumbers가 뭔 몰라.. 뒤본 결과 3개 던 관로 그 부 가 다.
막로.. 면 로 나나는 변기 과류 가..
가를 달래기 .. 그 굴리 녹 돌가는 머리를 굴려 동..
가가 는 기 가 나머로 나록 다. 다 범가 들 범 끝났다고나 까..
대 느려긴 겠만 뭐.. 범가 관로 력면 바로바로 나는 ~! 그래 로 경는 다.
면 려나.. 그럼 루!!^^*
¶
~cpp
#include <stdio.h>
#include <iostream>
const int MINIMUM=2;
const int MAXIMUM=65000;
int Carmichael(int);
int Sosu(int);
void main()
{
while (1)
{
printf("를 력 .\n");
int number=-1;
int answer=0;
while ((0!=number)&&(number<MINIMUM || MAXIMUM<number))
scanf("%d",&number);
if (0==number)
break;
answer=Carmichael(number);
if (0==answer)
printf("%d is normal.\n",number);
else
printf("The number %d is a Carmichael number.\n",number);
}
}
int Carmichael(int number)
{
if (0!=Sosu(number))
return 0;
for (register int i=2; i<number; ++i)
{
unsigned int a=1;
for (register int j=0; j<number; ++j)
{
a*=i;
a%=number;
}
if (i!=a)
return 0;
}
return 1;
}
int Sosu(int number)
{
if (2==number || 3==number)
return 1;
int *log_number=(int*)malloc((number+2)*sizeof(int));
int gab;
log_number[2]=1;
log_number[3]=0;
for (register int i=4; i<=number;i+=2)
{
log_number[i]=1;
log_number[i+1]=0;
}
for (register int i=3; i<=number; ++i)
{
if (0==log_number[i])
{
if (i==number)
{
free(log_number);
return 1;
}
log_number[i]=1;
gab=i+i;
for(register int j=i+gab; j<=number; j+=gab)
++log_number[j];
}
}
if (log_number[number]<3)
{
free(log_number);
return 2;
}
free(log_number);
return 0;
}










