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.
Tìm số nguyên tố trong đoạn a,b chỉ dùng lệnh rẽ nhánh và vòng lặp?
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