Code in ra n số nguyên tố đầu tiên bị sai

Em đang mày mò học c++ qua kênh anh Thân Triệu, bài Nhập vào n, in ra n số nguyên tố đầu tiên trong C++ e code như này:

#include<iostream>
using namespace std;

int main()
{
	int n;
	cout << "Nhap n: ";
	cin >> n;
	int m = 2;
	int dem = 0;
	while (dem <= n)
	{
		for (int i = 0; i < m; i++)
		{
			int uocm = 0;
			if (m % i == 0)
			{
				uocm++;
				if (uocm == 1)
				{
					cout << m << " ";
					dem++;
				}
				
			}
		}
		m++;
	}
	return 0;
}

em định là: nhập n, cho m = 2, dem =0, chạy vòng for từ 1-> m kiểm tra m phải số nt ko, nếu phải thì in ra, tăng dem lên, không phải thì m++ cho đến khi dem = n, cho em hỏi em sai ở đâu ạ, em cảm ơn

Bạn nên tra thuật toán kiểm tra số nguyên tố để tối ưu hơn, ở đây thuật toán của bạn sai và mắc lỗi thông dịch là chia cho số 0 ở m % i

5 Likes

Lỗi đó gọi là runtime error :slight_smile: chạy lên mới bị.

Bài này chạy sàng thôi.

5 Likes

Sài sàng tìm hay đếm giới hạn các số nguyên tố <= N, vậy bài này lấy N bằng cách nào thế bạn ?

2 Likes

\forall n \geq 6,\ p_n < n(\ln{n} + \ln{\ln{n}})

6 Likes

Đúng luôn đấy bạn. https://www.jstor.org/stable/2371291 (dài 22 trang)

5 Likes

Thank bạn nhé !!!

Có mod nào giải thích giúp vì sao comment của Blue_Manh bị flag ko? Cám ơn nhiều!

1 Like

Chắc là có nội dung không đúng, gây xúc phạm gì đó :thinking: ?

@HR16 bấm vào nó ra comment mà bạn, comment cũng ko bậy bạ và cũng ko có dấu vết sửa! Bởi vậy mới mong các mod xem lại cái hệ thống flag này, nó thật sự bị lạm dụng!

7 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?