#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
void eratos(int n)
{
bool PrimeArray[n+1];
int i;
int j;
long long sum = 0;
if(n<=1) return;
for(i=2; i<=n; i++)
{
PrimeArray[i] = true;
}
for(i=2; (i*i)<=n; i++)
{
if(PrimeArray[i])
{
for(j=(i*i); j<=n; j+=i)
{
PrimeArray[j]=false;
}
}
}
for(i=2; i<=n; i++)
{
if(PrimeArray[i]==true)
{
sum+=i;
}
}
printf("%lld\n", sum);
}
int main(int argc, char *argv[]) {
int num;
printf("범위를 입력하세요\n");
scanf("%d", &num);
eratos(num);
return 0;
}
'공부' 카테고리의 다른 글
| Dynamic Programming (0) | 2017.09.14 |
|---|---|
| (오일러 11번) 수평, 수직, 또는 대각선 방향으로 연속된 숫자 네 개의 곱 중 최대값은 얼마입니까? (0) | 2017.09.12 |
| (오일러 9번) a + b + c = 1000 이 되는 피타고라스 수 (0) | 2017.09.06 |
| (오일러 8번) 1000자리 숫자 안에서 이어지는 5자리 숫자의 곱 중 최대값은? (0) | 2017.09.06 |
| (오일러 7번) 10001번째의 소수 (0) | 2017.09.06 |
댓글