Bước 1: Viết 1 hàm kiểm tra số nguyên tố riêng.
Bước 2: Xử lý các vấn đề sau trong hàm main():
Nhập vào 2 số tự nhiên m và n (0 <= m < n)
Dùng vòng lặp chạy từ m đến n, mỗi lần lặp kiểm tra xem số đó có phải số nguyên tố hay không ? Nếu phải thì in ra màn hình và tăng biến đếm (đã khai báo từ trước), nếu không phải bỏ qua
Sau khi chạy hết vòng lặp thì in biến đếm ra màn hình.
Này nhé: Nếu n không nguyên tố thì sẽ có p là số nguyên sao cho p | n. Vậy thì (n/p) | n vì (n/p) * p = n. Nếu p và n/p đều lớn hơn sqrt(n) (giả thiết) thì nhân lại sẽ ra một số lớn hơn n, vô lí. Vậy chạy tới sqrt là đủ.
ELI15: Với p nguyên dương (ít nhất) một trong hai số p và n/p không vượt quá sqrt(n). Có p thì cũng có luôn cả n/p, nên chia xuống kiểu gì thì chạy tới sqrt là hết.
code của e nó như vậy thì sao lại k liệt kê ra được các số nguyên tố trong khoảng m, n vậy ạ nó chạy ra tùm lum ạ mn chỉ giúp e đc k
#include <stdio.h>
#include <math.h>
int main()
{
int m, n, i, a;
printf("Nhap m:\n m=", m);
scanf("%d", &m);
printf("Nhap n:\n n=", n);
scanf("%d", &n);
if(m<n)
{
for ( i =m; i<=n; i++)
{
for ( a = 2; a<=(sqrt(i)); a++)
{
if (i % a != 0)
{
printf("Day la so nguyen to %d \n", i);
}
else
{
printf("Day khong phai so nguyen to %d \n", i);
}
}
}
}
else{
printf("Khong ton tai");
}
return 0;
}
p chia hết n. Nếu viết n chia hết cho p thì phải dùng dấu ba chấm dọc nên sách toàn viết thế này.
Đầy đủ hơn: Nếu n là hợp số thì giả sử ta tìm được 1 ước p < B. Vậy ước còn lại là n*(1/p) > n*1/B = n/B. Để không bị sót hay thừa thì n/B = B hay B = sqrt(n).
Bước 1: Viết 1 hàm kiểm tra số nguyên tố riêng.
Bước 2: Xử lý các vấn đề sau trong hàm main():
Ở đây anh cũng có vài clip liên quan, em xem cho biết
Open playlist!
Cảm ơn mọi người ạ nhưng
Bài tập này e k đc dùng hàm ạ code của e như vậy mà lỗi thế thì phải làm sao ạ
Chạy sàng từ m đến n.
Như vậy là mình phải làm sao ạ
thuật toán xác đinh nt :
còn trong hàm chính :
xong
^
sqrt(x)
chớNày nhé: Nếu n không nguyên tố thì sẽ có p là số nguyên sao cho p | n. Vậy thì (n/p) | n vì (n/p) * p = n. Nếu p và n/p đều lớn hơn sqrt(n) (giả thiết) thì nhân lại sẽ ra một số lớn hơn n, vô lí. Vậy chạy tới sqrt là đủ.
ELI15: Với p nguyên dương (ít nhất) một trong hai số p và n/p không vượt quá sqrt(n). Có p thì cũng có luôn cả n/p, nên chia xuống kiểu gì thì chạy tới sqrt là hết.
Hình như thuật toán của bạn chưa tối ưu cho lắm:
code của e nó như vậy thì sao lại k liệt kê ra được các số nguyên tố trong khoảng m, n vậy ạ nó chạy ra tùm lum ạ mn chỉ giúp e đc k
ký hiệu j vậy anh, e chưa thấy bao giờ
p chia hết n. Nếu viết n chia hết cho p thì phải dùng dấu ba chấm dọc nên sách toàn viết thế này.
Đầy đủ hơn: Nếu n là hợp số thì giả sử ta tìm được 1 ước p < B. Vậy ước còn lại là n*(1/p) > n*1/B = n/B. Để không bị sót hay thừa thì n/B = B hay B = sqrt(n).