30/09/2018, 20:46
Lỗi khi chạy chuong trình
Mọi người cho em hỏi chương trình dùng hàm in ra các sô nguyên tố từ 2 đến 2000. Nhưng khi chạy thì số nguyên tố đầu tiên trở đi là 11. Cho từ 2 đến 50 hay đến số nhỏ hơn 2000 thì cho ra kết quả đúng?
#include <iostream>
using namespace std;
//Ham kiem tra mot so co la so nguyen to khonh
//Ham nhan vao mot so nguyen > 0
//Ham tra ve true neu so la so nguyen to, false neu khong la so nguyen to
bool laNguyento (int n)
{
bool ketqua = true;
if ( n < 2 )
ketqua = false;
if ( n >= 2 )
{
for ( int i = 2; i <= sqrt(n*1.0); i++ )
{
if ( n % i == 0 )
ketqua = false;
}
}
return ketqua;
}
int main()
{
cout << "Cac so nguyen to tu 2 den 2000 la: " << endl;
for ( unsigned int i = 2; i <= 2000; i++ )
{
if ( laNguyento(i) )
cout << " " << i << endl;
}
}
Bài liên quan
Mình test vẫn ra bình thường mà nhỉ ?
Trong vòng for kiểm tra số nguyên tố thì bạn nên thêm
Mà hàm kiểm tra số nguyên tố của bạn đã đúng chưa nhỉ ?
Mình nhìn thấy một vài số không hợp lý lắm ?
ví dụ 1995
Bạn có thể tham khảo bài viết
ôi Bác ơi em chạy đâu có số 1995.
Ủa vậy hả
Vậy bạn tham khảo thêm bài trên nhé
Muốn hạn chế sai sót, hãy hạn chế dùng số thực.
Không phải lúc nào cũng
sqrt(n)*sqrt(n)==n
. Dùngi*i<=n
thay thế choi<=sqrt(n)