Số nguyên tố thứ k

ai giúp em bài này vs ạ.em chỉ biết in ra số ntố thôi còn in ra số ntố thứ k em ko có ý tưởng j hết.Mong mn gíup đỡ
Hãy viết chương trình nhập từ bàn phím hai số nguyên dương N và k. Thông báo ra màn hình OK nếu N là số nguyên tố thứ k và KO nếu N không phải số nguyên tố thứ k.

Yêu cầu: Chỉ in ra màn hình OK hoặc KO và không có gì khác.

Ví dụ:

./Nguyentok
5 3
OK

Mình nghĩ là bạn nên dùng thuật toán sàng nguyên tố Eratosthen

em chưa học a ơi,em mới học lập trình thôi,mới học đến vòng lặp for

Hoặc là bạn sử dụng vòng lặp while, kiểm tra tính nguyên tố của từng số một. Cứ mỗi lần gặp số nguyên tố thì bạn tăng biến đếm lên. Khi nào biến đếm bằng số k thì kiểm tra xem N có bằng số nguyên tố thứ k không.

em vẫn chưa hiểu lắm a viết hộ em 1 đoạn code đc ko ạ

mình nghĩ như thế này . Ban đầu bạn tìm số nguyên tố , mỗi lần tìm được 1 số nguyên tố thì bạn dùng 1 biến đếm vị trí và tăng nó lên . Nếu vị trí == k là thỏa :wink:

int i = 2;
int dem =0;
while true
{
	if (isPrime(i))
		dem++;
	if (dem == k) 
		if (n == i)
		{
			cout << "OK";
			return 0;
		}
		else 
		{
			cout << "KO"
			return 0;
		}
	i++;
}

Hàm isPrime là hàm kiểm tra nguyên tố thì bạn tự viết nhé

vâng ạ,em cảm ơn a,để em thử ạ

Cách đơn giản nhất đó là đếm số số nguyên tố, không cần sợ tốn bộ nhớ

var i,j,n: integer;
begin
 i:=2;
 j:=0;
 repeat
  if ktnt(i) then inc(j);
  inc(i);
 until j=n;
end.
1 Like

Nếu dùng sàng nguyên tố thì mình nghĩ là phải có điểm cuối đk, mà số nguyên tố thứ k thì ta phải lặp đến đâu “-”

k(\ln k + \ln\ln k), \forall k \geq 6 nhé.

3 Likes

Cảm ơn bạn nhiều :)))

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