문제는 https://projecteuler.net/problem=58
Spiral prime을 계산하여 10% 이하가 될 때를 구한다.
간단한 문제이므로 코드에 대한 설명은 생략한다.
#include <stdio.h>
#include <math.h>
#include <windows.h>
#define RATIO 10
bool is_prime(int p) {
	int i;
	for (i = 2; i <= (int)sqrt(p); i++) {
		if (p%i == 0) return false;
	}
	return true;
}
void main() {
	int length, half = 3;
	int count = 8, tot = 13;
	int n = 49;
	int i;
	while (true) {
		half++;
		length = half * 2 + 1;
		for (i = 0; i < 4; i++) {
			tot++;
			n += (length - 1);
			if (is_prime(n)) count++;
		}
		if (count*RATIO < tot) break;
	}
	printf("length = %d\n", length);
	system("pause");
}'Project Euler' 카테고리의 다른 글
| Project Euler #55 (Lychrel numbers) (0) | 2016.09.19 | 
|---|---|
| Project Euler #108 (Diophantine reciprocals I) (0) | 2016.09.09 | 
| Project Euler #105 (Special subset sums: testing) (0) | 2016.09.09 | 
| Project Euler #106 (Special subset sums: meta-testing) (0) | 2016.09.09 | 
| Project Euler #103 (Special subset sums: optimum) (0) | 2016.09.09 | 
댓글