Các bạn có thể cập nhật thông tin các khóa học và đăng ký học với mình tại website : 28tech.com.vn
@nguyenphuc87877 ай бұрын
ngồi cả buổi chiều tìm hiểu mãi mới hiểu bài này -_- ....cảm ơn ad và chatgpt :>>
@culestinh9046 ай бұрын
=)))
@DautayGaming2 ай бұрын
video rat hay va y nghia, cam on rat nhieu
@28tech_2 ай бұрын
😍😍😍😍
@thangtoduc64032 жыл бұрын
Cảm ơn anh vì video rất bổ ích!
@hoangviet6412 Жыл бұрын
Đoạn này for(int i = 0; i
@28tech_ Жыл бұрын
Đúng r hơi lỗi chỗ này b
@hwi_t14 ай бұрын
làm sao để có cột input ở bên thế ạ
@nguyenhoang53462 жыл бұрын
Anh ơi dòng 12 em thấy i
@tuannta10 ай бұрын
tại sao sàng trên đoạn lại không cần if prime[i] vậy ạ
@oinh75883 ай бұрын
anh ơi em không hiểu dòng số 14 prime [j-l] =0 này là sao ạ mong anh giải thích giúp em:
@nvnhuquynh4505 Жыл бұрын
cảm ơn anh vì đã hướng dẫn tận tình ạ, nhưng mà e chưa hiểu lắm chỗ max(i*i,a+i-1/i*i) ấy ạ, tại sao càng max ạ
@28tech_ Жыл бұрын
Chỗ này tìm số lớn hơn trong 2 số, mục đích tìm số lớn hơn a mà chia hết cho i để loại, em nên lấy a cụ thể để hiểu rõ hơn
@nvnhuquynh4505 Жыл бұрын
@@28tech_ dạ e cảm ơn ạ
@thailexuan746 Жыл бұрын
thêm hàm max để làm gì vậy ạ?
@pesclassic1154 Жыл бұрын
anh ơi cho em hỏi là nếu mình muốn đếm số các số nguyên tố trên đoạn này thì thay thế nào ạ ?
@thailexuan746 Жыл бұрын
mình cho int s=0; sau cho s++ sau if ( a[i-l]) ấy bạn
@ucc-sh8pm2 ай бұрын
bài này chạy bằng c++ được không anh được thì cần thay đổi code gì không ạ hay chỉ cần code theo video và thay đổi cin cout? em có thử qua rồi nhưng không chạy được mong anh giải đáp. Em cảm ơn
@28tech_2 ай бұрын
Chạy được chứ
@tiuaut2 жыл бұрын
2:05 cho e hỏi tại sao ko duyệt i = 2 ===> R mà lại duyệt i = 2 ====> căn bậc 2 của R vậy a
@LamNguyen-je1mf Жыл бұрын
bạn hiểu chỗ đó chưa giải thích giúp mình với, mình cx chưa hiểu. Cảm ơn b nh ạ
@ngoctutranhoang9725 Жыл бұрын
nhan xet la voi mot so x nao do thi cac uoc tru thg x ra thi luon luon nho hon hoac bang sqrt(x) thoi b nen neu voi mot so x nao do la so nguyen to thi chi can tu 2 den sqrt(x) ma x ko chia het cac so trong khoang do la dc
@minhchaunguyen17154 ай бұрын
chỗ dòng 14 prime [j-l] =0 khó hiểu quá mong anh giải thích lại ạ
@kirito15z4 ай бұрын
bạn dùng google sheet hoặc excel làm minh họa: Mình sẽ giải chi tiết như thế này : vòng lặp for int j = max(i*i, (l+i-1)/i*i); j prime[j-l] = prime[0] = 10 nếu bạn cho chạy prime[j] tức prime[10] thì nó vượt quá kích thước mảng á Chúc bạn thành công!
@decon. Жыл бұрын
Thôi não mình chậm mình cứ dùng phương pháp không phải nghĩ vậy. Còn lại để computer nó lo 😂😂
@ptdvy0412 Жыл бұрын
cho em hỏi nếu l=20 và i=5 thì max(i*i, (l+i-1)/i*i) , max(25,20) nếu v thì nó bỏ qua 20 rồi, trong khi nó là bội của 5
@dovanchung9206 Жыл бұрын
Vì i=2 thì đã xét j=20 rồi á bạn
@Tuan-pp2kc Жыл бұрын
r-l+1 vậy r là gì và l là gì v ad
@trgtanhh2042 жыл бұрын
Mà nếu làm theo sàng số ngto của ông thanos gì đó :> thì em nghĩ mình chỉ âp dụng được với các giá trị 10^6 đổ lại thôi nhỉ còn bài này a b nó thuộc tận 10^9 giả dụ cho b=10^9 và cho a số nào đó 10^6 khum
@TungLe-nx4ke2 жыл бұрын
a cho em hỏi trong đoạn code liên kê số nguyên tố trên khoảng này, VD:em muốn tìm từ 20= l đến 50 =r mà ở đây lại gán giá trị từ 0 đến r -l +1 (là từ 0 đên 31) là prime(I)=1 thì lm sao mình bt được khoảng còn lại là sô nguyên tố ko để loại ạ. Em ko hiêu đoạn này a chỉ giúp e vs ạ
@TN123-cq1wp Жыл бұрын
anh cho em hỏi vì sao mình lại xét trường hợp trừ 2 đến căn n vậy anh, ở đây nó có ý nghĩa gì vậy ạh
@thanhvinhhuynh Жыл бұрын
Cho e hỏi tại sao mình viết y z mà vào visual studio 2022 nó báo là: " 'prime': unknown size " . Còn qua bên devc++ thì lại chạy bth z ạ.
@28tech_ Жыл бұрын
Trình biên dịch nó khác nhau đó em.
@28tech_ Жыл бұрын
Em nên khai báo cố định mảng prime ví dụ 1 triệu
@Coder-Java3 жыл бұрын
Em vẫn hơi khó hiểu phần chỉ số j - L và i - L mong anh giải thích với ạ. Nó giúp việc kiểm tra trên đoạn L-->R như thế nào vậy ạ
@28tech_3 жыл бұрын
Vì sàng trên đoạn thường L, R lớn nên e ko dùng L, R để làm chỉ số lưu trực tiếp mà L mình lưu ở 0, L + 1 lưu ở 1, cứ dần dần cho tới R. thì khi đó mình chỉ cần R-L+1 phần tử của mảng là lưu được.
@Coder-Java3 жыл бұрын
@@28tech_ Vâng em hiểu rồi ạ. Em cảm ơn ạ
@TuanPhan-om5vd2 жыл бұрын
a ơi cho e hỏi tí cái đoạn j-l thì l bằng 4 đúng ko ạ
@HieuNguyen-lj5ss3 жыл бұрын
có cách nào loại các số trùng nhau như bội của 2 với bội của 4 k anh tại nếu check số nguyên tố thì mình lại phải sàng hết
@nguyenhoaiang8420 Жыл бұрын
Ông bỏ bội của 2 thì 4 với bội 4 nó đã bay màu r cần gì sàng bội của 4
@phantan4697 Жыл бұрын
@@nguyenhoaiang8420 vậy là ông chưa hiểu rõ rồi, bài 2 thì sẽ có chỗ xét 4 bị loại bỏ vì là bội của 2 (có câu if(prime[i]) ấy), nhưng mà bài này k có chỗ đó. Bởi vậy nó sẽ xét hết từ 2->căn(r) mặc dù các số như 4,6,8... đáng lẽ đã bị loại thì nó vẫn phải xét luôn :))
@nguyenhoaiang8420 Жыл бұрын
@@phantan4697 à do tôi không nhìn kĩ, tôi cứ mặc định ổng làm như trước:>>
@phantan4697 Жыл бұрын
@@nguyenhoaiang8420 k có gì, cùng nhau học thôi :))
@nguyenvantankiet66242 жыл бұрын
anh ơi em hỏi, tại sao ở bài trước mình phải gán cho cho 0 và 1 không phải là số nguyên tố, mà bài này lại không cần vậy anh, mà nó vẫn chạy ra được đúng.
@nguyenvantankiet66242 жыл бұрын
em đoán là dòng 19, mình in ra ít nhất là từ 2 nên không cần gán đúng không anh, vậy bài trước em cũng có thể chạy từ 2 đến ở vòng in ra cuối cùng đúng không anh :v
@dungltk275911 ай бұрын
Trong các bài trc thì prime[0] đại diện cho số 0, còn bài này thì prime[0] là cận trái l, vd l=6 thì prime[0]=6, prime[1]=7, vẫn phải xét như các số khác, còn dòng 19 là để trong trường hợp l=0,1 thì vẫn phải gán trước nó ko phải là số nguyên tố
@ALEX-ol8mz2 жыл бұрын
anh ơi cái chỗ i*I là sao ạ
@ucluong718 Жыл бұрын
E chào a , a có thể ghim lại link đề mới được k ạ , link cũ bị die mất r
@tranviettienk17_hl192 жыл бұрын
4:07 tại sao đoạn này (20+1)\2*2 = 20 thế a
@28tech_2 жыл бұрын
21/2=10 em nhé vì nó chỉ giữ lại phàn nguyên
@phucnguyenhuu63962 жыл бұрын
Anh ơi, ví dụ kiểm tra số nguyên tố đối xứng trên đoạn, thì em vỉets 1hàm rev ktr số đối xứng, xong em dùng sàng trên đoạn, ở dòng prime[i-l] em thêm rev(prime[i]) thì có đúng không ạ?
@28tech_2 жыл бұрын
Ko đúng em nhé. Em muốn kiểm tra i là số thuận nghịch hay prime(i) mà gọi như vậy
@phucnguyenhuu63962 жыл бұрын
Vậy mình sửa thế nào ạ?
@thangnguyenuc79702 жыл бұрын
anh ơi , em code thì nó báo là bị tràn số anh ạ
@manhhuynh58432 жыл бұрын
Em xài dev c++ khi xong sử dụng hàm sieve trong hàm main thì không nhập số khi run là thế nào vậy anh ???
@28tech_2 жыл бұрын
có thể em code sai nên hàm sieve nó chạy chưa có xong. xem lại hàm sàng.
@manhhuynh58432 жыл бұрын
@@28tech_ dạ để e kt lại cám ơn anh ạ
@tranucbo16363 жыл бұрын
cái vòng for của prime[j-1]=0; tại sao lại không cho j chạy luôn từ bội nhỏ nhất lớn hơn L mà lại xét cả max của 2 số nữa ạ
@28tech_3 жыл бұрын
Duyệt từ bội nhỏ nhất lớn hơn L của i thì nhiều bội bị loại bởi các số ngto nhỏ hơn rồi sẽ được xét lại, điều này là ko cần thiết. Vd l =13,r=100 thì khi i = 7 mình duyệt từ 49. Các bội 14.21.28.35.42 đều bị loại rồi ko phải xét lại nữa
@cuongangvan13142 жыл бұрын
anh ơi cho em hỏi tại sao lại là max của hai số i*i và l+i-1/i*i vậy ạ
@28tech_2 жыл бұрын
Vì mình chỉ cần xét số lớn hơn trong 2 thằng đó thôi em. Duyệt từ i*i có thể nhỏ hơn khoảng cần xét rất nhiều
@AnTran-zt9xn2 жыл бұрын
@@28tech_ z sao mih ko lấy luôn cái l+i-1/i*i mà phải lấy max 2 tk vậy anh
@tuantrananh25762 жыл бұрын
@@AnTran-zt9xn cùng suy nghĩ với bạn, ví dụ đoạn của mình xét là từ 2 đến 100 đi . Nghĩa là left =2 ; biên chạy i=2 Khi đó thì code thì sẽ là lấy đoạn max (i*i, (l+i-1)*i/i) max ( 4,3) vậy cận dưới sẽ lấy số 4, khi đó số nt bị mất số 3 chưa xét.
@kxbhhhuuy657 Жыл бұрын
@@tuantrananh2576 lặp trên i=2 rồi nên vẫn in ra đc 2 và 3
@LamNguyen-je1mf Жыл бұрын
@@tuantrananh2576 mình nghĩ bạn đang giải thích như vậy là nó đang chỉ ở i=2 thôi, nghĩa là đang xét bội của 2 đó; sau khi kết thúc vòng lặp con bên trong thì i= 3 và so sánh max(3*3, 4) thì j=9. vậy sau đó nó xét bội của 3 bắt đầu từ 9 đó. (ý hiểu của mình thôi ạ)
@pqh2369 Жыл бұрын
AD ơi ghim lại link đề dc k
@conheodat59912 жыл бұрын
J-L và i-l phải chỉ số mà nó lưu tạm các giá trị đúng k a
@28tech_2 жыл бұрын
Đúng thế em.
@nbv12123 жыл бұрын
Cái chỗ sàng hình như a thiếu kiểm tra i có phải số nt
@28tech_3 жыл бұрын
Ah ko cần em nhé, mình chỉ cần loại các bội của i, còn i có phải là snt hay không thì cũng ko cần biết :D.
@luc33102 жыл бұрын
@@28tech_ anh ơi, cho em hỏi tại sao lại không cần vậy ạ, em thấy bài sàng tối đa n phần tử vẫn có ?
@phantan4697 Жыл бұрын
@hihatv9069 tôi cũng nghĩ giống ông, nhưng mà là sàng trước từ 1->sqrt(10^9). Trường hợp nhiều test case với b~=10^9 thì bị lỗi time ấy. Nên nếu loại trước được thì loại :))
@trananhvu797 Жыл бұрын
mọi người có thể giải thích lại hộ em được không ạ e ý hiểu của e thì e đang hiểu là nếu tạo mảng r-l+1 vd nhập l=10 r=100 thì mảng sẽ có size là 91 và index từ 0-90 mà nó lại sàng trên số index thì khi in index ra sao vẫn in ra được những số từ 90-100 ạ e tưởng mình mới chỉ nhập xét index trên 0-90
@28tech_ Жыл бұрын
tại vì lúc check a check prime[i - l]
@animaladventures10233 жыл бұрын
sao khi em test case nhập 5 20, nó lại ko chạy vậy anh nhỉ?
@28tech_3 жыл бұрын
Em xem lại code có bị lặp vĩnh viễn ko. Chỗ vòng for j ấy xem thử lại
@animaladventures10233 жыл бұрын
e xem lại rùi, cái vòng lặp phải for(int i=0;i
@BDCAT_VuNgocPhuong3 жыл бұрын
số phần tử của prime là r-l+2 chứ ạ
@28tech_3 жыл бұрын
từ l tới r là r - l + 1 số thôi chứ.
@soninh68422 жыл бұрын
tại sao e dùng thuật toán sàng snt như bài trước, rồi cho i chạy từ a đến b lại lỗi nhỉ. CODE của e: int a[1000001]; void sangSNT(){ for(int i=0; i>b; for(int i=a; i
@xyznguyenabc4682 жыл бұрын
l va r ban input la nhu nao
@soninh6842 Жыл бұрын
@@xyznguyenabc468 hi cảm ơn bro nhé, giờ mình mới xem. Cái này lỗi do mình đặt cận trên với cận dưới là a và b, trong đó cận trên là a trùng với tên mảng mà mình khai báo lúc ban đầu. Về sau mình đổi a với b thành l với r là được rồi :v
@viettranquoc60722 жыл бұрын
Thưa thầy tại sao em nhập thử các số như (1;100) (1;1000) (1;10000) .... Nó lại không chạy được code là sao ạ
@28tech_2 жыл бұрын
Có thể em code sai
@NguyenQuocVinh-jn6mb3 ай бұрын
bài này làm 2 tiếng mới hiểu =((
@28tech_3 ай бұрын
Hơi lâu 🤩
@phatnguyenthachtan206 Жыл бұрын
Có ai giúp mình với, mình viết code vậy không biết sai chỗ nào, toàn in ra số nguyên tố
@ngoctutranhoang9725 Жыл бұрын
phan ban lam la : for (int i=maxi(2,l); i
@fumisticchannel14653 жыл бұрын
theo em nghĩ hàm max không cần viết đâu ạ
@retofkins5724 Жыл бұрын
Ai giúp e với ạ, e để đoạn từ 8 đến 100; xét đến i=7 thì j=49. Bên dưới prime[j-l]=0 thì tương đương [49-8] thì prime[41]=0 ạ :(( Mà 41 là snt . Cái nào = 1 thì mới in ra màn hình. Cho e hỏi [41] = 0 thì sao vẫn in ra được ạ
@HuuNguyen-b3v Жыл бұрын
prime[j-l] = prime[56-8] mà bạn, đâu phải 49 đâu
@HuuNguyen-b3v Жыл бұрын
j += i mà
@hocviamme40953 жыл бұрын
anh ơi e bị time limit exceeded r :v , chỉnh sao cho nó ok đây a ơi :v
@28tech_3 жыл бұрын
E phải cho biết đề bài là gì và code của em ntn nữa chứ
@hocviamme40953 жыл бұрын
@@28tech_ Cho hai số nguyên dương L ≤R. Hãy đếm xem trong đoạn [L, R] có bao nhiêu số nguyên tố. -Dữ liệu vào Dòng đầu ghi số nguyên dương T là số bộ test; T dòng tiếp theo, mỗi dòng chứa hai số nguyên dương L ≤R cách nhau bởi một dấu cách. -Dữ liệu ra Với mỗi cặp số L và R, ghi ra trên một dòng số số nguyên tố trong đoạn [L, R] code em như sau : #include #define ll long long using namespace std; int snt(int l,int r){ ll prime[r-l+1]; for (ll i=0;il>>r; a[i]=snt(l,r); i++; } for (int j=1;j
@HuyTran-gx1zy7 ай бұрын
ủa /i xong lại nhân i thì có làm được gì đâu nhỉ?
@28tech_7 ай бұрын
Trong toán nó là thế nhưng trong lập trình thì khác nhé, bạn thử lấy 23/5*5 xem nó có ra được 23 không nhé :D
@HuyTran-gx1zy7 ай бұрын
@@28tech_ dạ vâng, cảm ơn a
@nguyenduongtran646311 ай бұрын
giảng vừa nhanh vừa khó hiểu =]]
@28tech_11 ай бұрын
Kiến thức khó mà bạn, thấy mn đều hiểu ok mà.
@nguyenduongtran646311 ай бұрын
chắc do tôi gà quá =]] mà cảm ơn ad đã chia sẻ kiến thức khá hay ạ @@28tech_
@kienle182511 ай бұрын
A này dạy là dễ hiểu nhất r đấy với lại cũng là kiến thức khó b xem đi xem lại khoảng 2 3 lần là hiểu
@-xl-5862 Жыл бұрын
a cho e hỏi e viết giống a vậy nhưng không in ra được mog a giúp với ạ #include #include int max(int a, int b){ if (a
@tusanh-q7d Жыл бұрын
nao e load cham nen e lam nhu nay duoc khong a #include #include int ff[1000000000]; void sang(int l, int r) { // ff[i] = 0: không phải số nguyên tố // ff[i] = 1: là số nguyên tố for (int i = 0; i
@lenhatminhkhoi9174 Жыл бұрын
a ơi dòng 12 tại sao lại lấy i
@nhut2004 Жыл бұрын
số phần tử bạn cho nó là số nguyên tố hết để sàng lại qua bội của nó