-
18-09-2012, 08:17 AM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Cho em hỏi về cái bài tập chút nào!!
Em mới học về C++ và làm bài tập tìm số số nguyên tố nhỏ hơn số a. Code em viết như sau:
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{ int a;
int x=1,m=0;
cout << " Nhap so a :";
cin >> a;
if (a<2) cout<<"Ko co so nguyen to nao be hon a";
else for (int i=2;i<a;i++)
{for (int j=1;j<=i;j++)
if (i%j==0 and j==i)
x=x+1;}
cout<<"So so nguyen to nho hon a la:"<<x;
getch();
}
Nhưng sao em chạy thì toàn nó cho ra kết quả là a-1 em ko hiểu lỗi ở đâu , em có viết 1 code khác dựa vào tham khảo khai báo hàm phụ thì lại đc, code:
#include <iostream>
#include <conio.h>
using namespace std;
int snt(int b)
{
int i,dem=0;
for (i=2;i<b;i++)
if (b%i==0) dem++;
if (dem==2) return 1; else return 0;
}
int main()
{ int a;
int x=1;
cout<<" Nhap so a:";
cin >> a;
if (a>=2) {for (int i=2; i<a; ++i)
if (snt(i)==1) x=x+1;
cout<<" So so Nguyen To nho hon a la:"<<x;}
else cout<<" KO co so nguyen to nao nho hon a";
getch();
}
Các bác coi dùm em xem thử tại sao lại thế hộ cái .À mà em dùng DEV C++ nha các bác.
Thanks!!!View more random threads:
-
18-09-2012, 09:02 AM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Mã:#include <iostream> #include <conio.h> using namespace std; int main() { int a; int x=1; cout << " Nhap so a :"; cin >> a; if (a<2) cout<<"Ko co so nguyen to nao be hon a"; else { for (int i=2;i<a;i++) { int j=2; while(i % j != 0) j++; if(i == j) x=x+1; } } cout<<"So so nguyen to nho hon a la:"<<x; getch(); }
Thứ 2 là tư tưởng giải thuật
for (int j=1;j<=i;j++)
if (i%j==0 and j==i)
x=x+1;}
số nào mà chẵng chia hết cho chính nó. Ở đây muốn xác định số nguyên tố thì phải kiểm tra các ước, nếu tồn tại 1 ước khác chính nó thì dừng việc tăng. Sau đó kiểm tra, nếu không có ước nào lớn hơn 1 và nhỏ hơn nó thì mới tăng đếm lên 1.
Với lại người mới lập trình thường đặt x y z. Nhưng như vậy không tốt, nếu là biến đếm thì đặt là dem luôn như người ta cho trực quan.
-
18-09-2012, 09:22 AM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi daotien0887
-
18-09-2012, 09:59 AM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi daotien0887
-
18-09-2012, 10:57 AM #5Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi dula1204
for( ; i % j != 0; j++);
if( i = j) ..
không dùng break vì break hok có tác dụng trong trường hợp này. Với lại đây là lặp không xác định trước số lượng bước lặp thì nên dùng while
Ngọc Bích xanh bản chất thuộc dòng đá đá hoa (jade). Và cẩm thạch là tên gọi chung của ngọc bích. Vì thực chất chúng thuộc dòng đá đa khoáng được hình thành từ chất Silicat dưới dạng dioxy. Ngọc bích...
Chia sẻ Vòng tay ngọc bích xanh là...