My life's library
원하는 값까지의 소수 구하고 더하는 알고리즘!! 본문
1 #include <stdio.h>
2 #include <stdlib.h>
3
4 void sosu(int num){
5 int *arr;
6 int j;
7 long sum=0;
8 arr=(int*)malloc(sizeof(int)*num);
9 int i=2;
10
11 for(i=2; i<=num; i++){
12 arr[i]=i;
13 //입력받은 수만큼 2부터(1은 당빠제외!) 배열 넣어준닷!
14 }
15
16 for(i=2; i<=num; i++){
17 if(arr[i]==0)
18 continue; //이미 0된거 빼버리고! (포함하면 CPU가 힘들어해요 ㅜㅜ)
19 for(j=i*2; j<=num; j+=i){
20 arr[j]=0;
21 }
22 //i(자기자신)은 제외 어차피 소수인데 뭐 ㅎㅎ
나머진 0으로 초기화
23 }
24
25 for(i=2; i<=num; i++){
26 if(arr[i]!=0){
27 printf("%d\n",arr[i]);
28 sum += arr[i];
29 } //sum에 더해줍니닷!
30 }
31 printf("모두 더한수는?!\n");
32
33 printf("%ld입니다!!!!!!\n",sum);//출력
34
35 free(arr);
36
37 }
38 int main()
39 {
40 int num;
41 int i;
42 printf("어느 숫자까지 구하실건가요?\n");
43 scanf("%d",&num);
44 printf("아하! %d까지 구하시는군요! 구해드리겠습니다!!\n",num);
45 sleep(2);
46 for(i=0; i<10; i++)
47 printf("\n");
48 sosu(num);
49
50 return 0;
51 }
티스토리 친구(기장님이란건 비밀 소곤소곤) 님의 게시물 중 에라토스테네스(맞나?)의 체를 보고 열씨미 구현한 알고리즘!!
(밤샘 ㅜㅜ)
룸메님이 한시간 걸려서 나오는 걸 5초안에 깔끔히 출력시켜 주시는 대단한 코드님이시다 ㅜㅜ
설마 int 넘어가나 했는데 100만부터 넘어가더라구요 ㅜㅜ
오버플로우 때매 계산 귀찮아져서 long형으로...ㅜㅜ