30/09/2018, 21:13
Thắc mắc về bài tập liệt kê số nguyên tố nhỏ hơn n trong C
đây là bài tập C của e ạ, bài yêu cầu liệt kê tất cả các số nguyên tố nhỏ hơn một số N nhập vào từ bàn phím, đây là bài trên mạng, nhưng e vẫn chưa hiểu tại sao dem phải gán giá trị bằng 2 thì máy mới liệt kê đúng các số nguyên tố. Nếu e bỏ đoạn “dem==2” đi thì chương trình liệt kê toàn bộ các số trước N ra. E vẫn ko hiểu ạ ? Mong đc a chị giải đáp, em cảm ơn!
#include <stdio.h>
main()
{
int n,i,j,dem=0;
printf("
Nhap n: ");
scanf("%d", &n);
for (i=2;i<=n;i++)
{
for (j=1;j<=i;j++)
{
if(i%j==0)
dem++;
}
if(dem==2)
printf("%d, ",i);
dem=0;
}
}
Bài liên quan
Bạn phải hiểu được một số nguyên tố là số như thế nào: Là số lớn hơn 1 và chỉ chia hết cho 1 và chính nó, tức chỉ có 2 ước.
Biến “dem” ở đây biểu thị cho số ước tìm được của số đang được biến i duyệt đến (trong khoảng từ 1 -> n)
=> dem == 2 thì số đó là số nguyên tố, bien != 2 thì ko phải số nguyên tố
cách đặt tên biến số tuyệt vời “dem” ko biết là đếm cái gì
bạn phải hiểu là số nguyên tố là số chia hết cho 1 và chính nó. khi ban đầu thì dem=0, sau khi chia hết cho 1 thì dem được cộng thêm 1 tức dem=1, sau khi chia hết cho chính nó thì dem cộng thêm môt nữa tức là dem=2, khi mà nó chia hết cho một hoặc nhiều số khác thì đếm đương nhiên sẽ lớn hơn 2, vậy nên t kết luận dem phải bằng 2 thì vì là số nguyên tố và in ra số đó. Hy vọng bạn hiểu.
em hiểu rôi, cảm ơn mọi người rất nhiều ạ
dem ở đây là ước, số nguyên tố là số chỉ chia hết cho 1 và chính nó nên ước của nó chỉ bằng 2. Nếu số nào có ước lớn hơn 2 thì nó sẽ không phải là số nguyên tố. còn số nào có ước = 2 thì nó sẽ là số nguyên tố. Khi i%j==0 dem++ thì nó đang tính số ước của i. Khi i chia hết cho j thì dem sẽ tăng 1. Nếu bỏ dem==2 thì nó sẽ in ra i->n theo vòng lập trên rồi :))
This post was flagged by the community and is temporarily hidden.
Mn cho em dòng code dem=0; ở cuối có tác dụng như thế nào ạ? Nếu bỏ đi thì chương trình ko chạy được. Tks !
k = 0 ở đâu hả bạn? Bạn có code không?
e nhầm, đoạn code dem=0 ý ạ
Đó là biến đếm số ước của số i. Mỗi lần xem xét 1 số i mới, ta cần phải khởi tạo lại biến đếm.
theo e hiểu thì với số i khác thì dem sẽ đếm lại từ 0, nếu =2 thì cho ra số nguyên tố, rồi xét i tiếp theo và dem sẽ lại về giá trị 0 đúng ko ạ ?
Bạn hiểu đúng rồi đó.