Linear Sieve Method for Prime Numbers
2195 단어 method
1 #include <stdio.h>
2 #define MAX 1000
3 #define null1 0
4 #define NEXT(x) x=next[x]
5 #define REMOVE(x) { previous[next[x]]=previous[x]; \
6 next[previous[x]]=next[x]; \
7 }
8
9 #define INITIAL(n) { unsigned long i; \
10 for(i=2;i<=n;i++) \
11 previous[i]=i-1,next[i]=i+1; \
12 previous[2]=next[n]=null1; \
13 }
14
15 int main()
16 {
17 unsigned long previous[MAX+1]={0};
18 unsigned long next[MAX+1]={0};
19 unsigned long prime,fact,i,mult;
20 unsigned long n;
21 unsigned long count=0;
22
23 scanf("%lu",&n);
24
25 INITIAL(n); //initial the array
26
27 for(prime=2;prime*prime<=n;NEXT(prime))
28 {
29 for(fact=prime;prime*fact<=n;NEXT(fact))
30 {
31 for(mult=prime*fact;mult<=n;mult*=prime)
32 REMOVE(mult);
33 }
34 }
35 for(i=2;i!=null1;NEXT(i))
36 printf("%lu ",i),count++;
37 printf("
The sum of the prime numbers is %lu
",count);
38 }
Reference material: C 언어 명제 베스트 100 테크닉 편 in Chinese.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
각각에 대한 혼란, 수집, 선택 및 매핑 방법직장 생활 초기에 Ruby 프로그래밍 언어를 배울 때 each , collect , select 및 map 방법에 대한 몇 가지 문제에 직면합니다. 그래서 초보 레이블 프로그래머를 위해 이 글을 씁니다. 처음에는 많...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.