Xin hướng dẫn bài đếm số nguyên tố

VCT nhập vào 2 số nguyên dương a và b (a < b). Nếu nhập sai yêu cầu nhập lại.

Đếm có bao nhiêu số nguyên tố trong đoạn từ a đến b.

gợi ý bạn là dùng do-while kiểm soát điều kiện nhập, gán một biến đếm để chạy vòng for rồi sử dụng biến đếm thứ 2 để đếm số nguyên tố

1 Like

Bạn dùng vòng while vô hạn để tạo điều kiện nhập, nếu nhập đúng thì break. Có thể viết một hàm riêng để kiểm tra số nguyên tố, rồi for từ a đến b, khai báo thêm biến đếm số lượng số nguyên tố.
Bạn viết code đi rồi post lên đây để sửa.

1 Like

e chỉ có thể viết đc như này , sai chỗ nào chỉ e với , e cảm ơn

#include <stdio.h>

int main ()
{
    int a,b,dem;
    do
    {
        printf ("Nhap a:");
        scanf ("%d",&a);
        printf ("Nhap b :");
        scanf ("%d",&b);
    }
    while (a>=b);
    for (int n=a ; n<=b; n++)
    {
        int dem=0;
        for (int i=2; i<n; i++)
        {
            if (n%i!=0)
                dem++;
        }
    }
    printf ("co %d so nguyen to ",dem);
    if (dem==0)
    {
        printf ("khong co so nguyen to nao ");
    }
}

Sai chỗ này, nếu n = 6, mình chạy từ 2, 3, 4, đến 4 là sai rồi vì 6 % 4 != 0, biến đếm vẫn tăng.

Code của mình:

#include <stdio.h>
#include <math.h>

int isPrime(int n)
{
	int i;
	if (n < 2) return 0;
	for (i = 2; i <= sqrt(n); i++)
	{
		if (n % i == 0) return 0;
	}
	return 1;
}

int main()
{
	int a, b, count = 0;
	while (1)
	{
		printf("Nhap a va b: ");
		scanf("%d%d", &a, &b);
		if (a < b) break;
	}
	for (int i = a; i <= b; i++)
	{
		if (isPrime(i)) count++;
	}
	printf("Co tong cong %d so nguyen to\n", count);
	return 0;
}
1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?