Log In
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("\n 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;
}
}
1 Like
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ố
2 Likes
cách đặt tên biến số tuyệt vời “dem” ko biết là đếm cái gì
1 Like
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.
2 Likes
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 :))
1 Like
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 đó.
1 Like
Home
Categories
FAQ/Guidelines
Terms of Service
Privacy Policy
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?