일반적인 방법으로 소수의 합을 구하는 코드인데, 100만이나 200만 범위 내의 소수의 합을 구하려면 너무 느려요 ㅠㅠ 큰 범위 내의 소수의 합을 빠르게 구하고 싶으면 에라토스테네스의 체를 이용하면 됩니다.
//1부터 입력한 수까지 소수의 합 #include <stdio.h> int prime( int a ); int main( ) { int input; int i; int sum; printf( "0을 입력하면 종료\n\n" ); while(1) { sum = 0; //입력 printf("양의 정수를 입력 : "); scanf( "%d", &input ); if( input==0 ) return 0; //입력한 수까지 반복하고, 소수가 리턴되면서 누적 for( i=2 ; i<=input ; i++ ) { sum+=prime( i ); } printf( "%d까지의 소수의 합 : %d\n\n\n", input, sum ); } return 0; } //소수를 구하는 함수 int prime( int a ) { int j; for(j=2 ; j<=a ; j++) { if(a%j == 0) { if(a == j) return a; if(a != j) return 0; } } }
'예제 모음 > 정보처리기사-수학' 카테고리의 다른 글
[정보처리기사] 배수의 개수와 합 - C언어 구현 (0) | 2013.03.31 |
---|---|
[정보처리기사] 최대값, 최소값 구하기 - C언어 구현 (0) | 2013.03.31 |
[정보처리기사] 약수 구하기 - C언어 구현 (2) | 2013.03.31 |
[정보처리기사] 소인수 분해 - C언어 구현 (0) | 2013.03.31 |
[정보처리기사] 최대 공약수(gcm), 최소공배수(lcm) - C언어 구현 (0) | 2013.03.31 |
[정보처리기사] 소수의 합 - C언어 구현 - 에라토스테네스의 체를 이용한 소수의 합 구하기 (2) | 2013.03.31 |
[정보처리기사] 소수 판별 - C언어 구현 (0) | 2013.03.31 |