-
Cantor Expression (칸터 표현)Number Theory 2017. 3. 23. 18:16
1. 칸터 표현이란..
기본적으로 10진수 8진수 등등과 달리 FACTORIAL을 이용해 수를 표현하는 것이다.
어떤 10진수 x가 있다면 이 x는 다음과 같이 유일무이하게 표현할 수 있다.
이를 10진수 2진수처럼 표현하기 위해 두가지를 증명해야한다.
1. 모든 정수를 cantor expression으로 표현할 수 있다.
2. 그 표현은 유일하다(unique)
이 두가지 증명은 따로 하지 않겠다. ( 기존 진수 표현 증명과 비슷하다. )
2. 칸터 표현 프로그램
다음 프로그램은 정수를(10진수) 형태로 집어 넣으면 그 정수를 cantor 표현으로 바꿔주는 프로그램이다.
예제 입력
312
예제 출력
2*5! + 3*4! + 0*3! + 0*2! + 0*1!
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748#include <stdio.h>//dec을 받아 expression 배열과 배열크기 반환int Cantor_Expansion(int dec, int *expression);int main(){int dec;int expression[1000];int n;int i;printf("<Make Cantor Expansion>\n");printf("Please Input Dec : ");scanf("%d", &dec);n = Cantor_Expansion(dec, expression);if (dec <= 0){printf("Do not enter not positive integer!\n");return 0;}for (i = n; i >= 2; i--)printf("%d*%d! + ",expression[n-i],i);printf("%d*%d!\n", expression[n - i],i);return 0;}int Cantor_Expansion(int dec, int *expression){int stack[1000];int top = 0;int i = 2;while (dec){stack[top++] = dec % i;dec /= i++;}i = 0;while (top)expression[i++] = stack[--top];return i;}'Number Theory' 카테고리의 다른 글
Kaprekar Constant ( 카프리카 상수 ) (0) 2017.03.23 fibonacci 100000th (피보나치 수열 10만항) (0) 2017.03.20 NIM GAME (님 게임) (0) 2017.03.20 big_integer_operation(큰 정수 연산) (0) 2017.03.20 The Fibonacci number (피보나치 수) (0) 2017.02.01