Wechall.net 워게임 사이트의 첫번째 문제 Prime Factory입니다.
요약해보자면 각 자리수의 합계도 소수이면서 100만이 넘는 최초의 두 소수를 구하여라 입니다.
정답 적을때는 만약 첫번째 숫자가 1,234,567 이고 두번째 숫자가 8,765,432 이면 12345678765432 으로 입력하라네요.
[C code]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int number = 1000000; int count = 0; int i, j, k; char str[100]; while (1) { if (count == 2) { printf("\n"); return 0; } for (i = 2; i < number; i++) { if (number%i == 0) break; else if (i == (number - 1)) { int sum = 0; itoa(number, str, 10); for (j = 0; j < 10; j++) { if (str[j] == NULL) break; sum += (int)str[j] - 48; } for (k = 2; k < sum; k++) { if (sum%k == 0) break; else if (k == (sum - 1)) { printf("%d", number); count++; break; } } } } number++; } } | cs |
[Python code]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | a = 1000000; number = 0; while 1: for i in range(2, a): if a % i == 0: break elif i == a - 1: sum = 0 for j in range(len(str(a))): sum += int(str(a)[j]) for k in range(2, sum): if sum % k == 0: break elif k == sum - 1: number += 1 if number == 2: print str(b) + str(a) exit(0) b = a a += 1 | cs |