/*
카프리카 수
카프리카 수란 인도의 수학자 D.R.카프리카의 의해 정의한 수이다.
어떤 수의 제곱수를 두 부분으로 나누어 더하였을 때 다시 원래의 수가 되는 수들을 의미한다.
예를 들어 45는 카프리카 수인데, 45² = 2025이고, 20+25 = 45이기 때문이다.
어떤 수를 입력 받고 그 수가 카프리카 수인지 아닌지를 출력하는 함수를 만드시오.
어떤 수를 입력 받고 자릿수가 그 수인 모든 카프리카 수를 출력하시오.
어떤 수를 입력 받고 어떤 수 이하의 모든 카프리카 수를 출력하시오.
이 셋중에서 원하는 유형 하나를 골라 푸시오.
입력 (유형 1)
print(kaprekar_number(1))
print(kaprekar_number(45))
print(kaprekar_number(297))
print(kaprekar_number(3213))
*/
#include <stdio.h>
#include <string.h>
#include <math.h>
void Print(int number)
{
// 입력
//int inputNumber = 1;
// 처리
// 1. 제곱
int squareNumber = 0;
squareNumber = pow(number, 2);
printf("%d", squareNumber);
int count = 0;
int num = squareNumber;
while (num != 0)
{
num = num / 10;
count++;
}
if (count % 2 == 1)
{
printf("%d는 카프라카 수가 아닙니다.", number);
return;
}
// 2. 자리수 계산
int sumNumber = 0;
int division = 1;
for (int i = 0; i < count - 2; i++)
{
division = division * 10;
}
int num1;
int arr[2] = { 0 };
arr[0] = squareNumber / division;
arr[1] = squareNumber % division;
// 3. 더하기
int sum = 0;
for (int i = 0; i < count / 2; i++)
{
sum += arr[i];
}
//printf("%d", sum);
// 출력
if (sum == number)
{
printf("%d는 카프리카 수 입니다.", number);
}
else
{
printf("%d는 카프리카 수가 아닙니다.", number);
}
}
int main(void)
{
Print(45);
return 0;
}
댓글 영역