Tìm số nguyên tố trong đoạn a,b chỉ dùng lệnh rẽ nhánh và vòng lặp?

Mọi người giúp e với “Tìm số nguyên tố trong đoạn a,b chỉ dùng lệnh rẽ nhánh và vòng lặp”…nếu viết hàm thì đơn giản r…nhưng đề như vậy thì e suy nghĩ 4 ngày rồi viết code vẫn không chạy.

1 Like
2 Likes
#include <iostream>
using namespace std;
int main()
{
	int a, b, i, j, flag;
	cin >> a >> b; // nhap a va b.
	for(i=a+1; i<b; ++i)
	{
		flag=1;
		for(j=2; j<=i/2; ++j)
		{
			if(i%j==0)
			{
				flag=0;
				break;
			}
		}
		if(flag==1)
			cout << i << "  ";
	}

	return 0;
}
4 Likes
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
	int a = 1, b= 10;
	for (int i = a; i <= b; i++)
	{
		for (int j = 2; j < i; j++)
		{
			if (i % j != 0)
			{
				cout << i << setw(3);
				break;
			}
			else
			{
				break;
			}
		}
	}
	cout << "\n\n";
	system("pause");
	return 0;
}
1 Like

mọi người làm rồi sub hộ mình xem sao bài này cũng đơn giản mà lại ko submit đc nhỉ:

uses crt;
var prime:array[2..10000] of boolean;{bieu thi xem moi mot phan tu co chi so i thi i co la nguyen to khong}
    i,j,N,sN:integer;
BEGIN
        clrscr;
        write('Nhap N=');
        readln(N);

        {Dat tat ca cac gia tri cua mang prime ve true}
        for i:=2 to N do
                prime[i]:=true;

        sN:=trunc(sqrt(N));

        for i:=2 to sN do
        Begin
                if(prime[i]=true) then{Neu i la so nguyen to hoac chua bi danh dau}
                Begin
                        {Tim boi dau tien cua i}
                        j:=i*i;
                        {Tat ca cac boi cua i se bi danh dau khong phai la nguyen to}
                        while(j<=N) do
                        Begin
                                prime[j]:=false;
                                {Tim boi tiwp theo cua i}
                                j:=j+i;
                        End;
                End;
        End;

        {In ra cac so nguyen to}
        for i:=2 to N do
        Begin
                if prime[i]=true then
                        write(i:5);
        End;


        readln;
END.

Đây là thuật toán sàng Eratosthenes nhé: https://vi.wikipedia.org/wiki/Sàng_Eratosthenes

Theo mình như thế này
-Cho người dùng nhập vào khoảng a,b ( a !=b ) và ( a >b )
-Xây dựng 1 hàm kiểm tra số nguyên tố theo kiểu bool,đúng thì trả về true,sai trả về bool
-Làm 1 vòng lặp bắt đầu từ a,kết thúc tại b ( có thể lấy cả a và b tùy theo yêu cầu ),trong vòng lặp kiểm tra từng số có phải số nguyên tố bằng hàm trên không,có thì xuất nó ra,không thì bỏ qua xét phần tử khác
-Kết thúc chương trình :))

P/s: 2 số a,b bạn lúc làm bạn nên để sẵn là 0 và 10 đễ dễ kiểm tra fix lỗi
Trân trọng.

   #include <iostream>
    using namespace std;
    int main(){
            int a,b;
            cin >> a >> b;
            for (int i=a; i<=b; i++){
                    int dem=0;
                    for (int j=1; j<=i; j++)
                            if (i % j ==0) dem++;
                    if (dem==2) cout << i << endl;
            }
    }
1 Like

Em dùng i=2 đến sqrt(i) được không anh?

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