Tham khảo code sàng nguyên tố:
Code sàng nguyên tố pascal
const nmax=1000; var SNT:array[0..nmax+1] of boolean; procedure sangnt; var i,j:longint; begin fillchar(snt,sizeof(snt),true); snt[1]:=false; i:=2; while i<=trunc(sqrt(nmax)) do begin while snt[i]=false do inc(i); for j:=2 to nmax div i do snt[i*j]:=false; inc(i); end; for i:=1 to nmax do if snt[i]=true then write(i,' '); end; begin sangnt; readln; end.
Code sàng nguyên tố c++
#include <iostream> #include <math.h> using namespace std; const int MAXSANG = 1000; int snt[MAXSANG+1]; void sangnt() { long i,j; for (i=1; i<=MAXSANG; i++) snt[i]=1; snt[1]=0; i=2; while (i<=sqrt(MAXSANG)) { while (snt[i]==0) i++; for (j=2; j<=MAXSANG/i; j++) snt[i*j]=0; i++; } } int main() { sangnt(); for (int i=1; i<=1000; i++) if (snt[i]) cout<< i<<endl; return 0; }
Độ phức tạp thuật toán O(n)
Có thể giải thích cho em được không ạ? Em là học sinh cấp 2 nên chưa biết nhiều. Mong ad giải thích cho em. Xin cảm ơn!
ko em ơi