30/09/2018, 21:12
Anh/chi giúp em sửa lỗi đoạn code sau
đề nhâp vào n rồi in ra số nguyên tố nhỏ hơn n:
code:
#include <iostream>
using namespace std;
int nhap(int &n)
{
do{
cout<<"nhap so nguyen duong:";
cin>>n;
}
while(n<0);
}
int nguyento(int n)
{
int i,j,check;
for(i=n;i<=2;i--)
{
check=0;
for(j=2;j<i;j++)
{
if(i%j==0)
{
check=1;
break;
return 0;
}
}
if(check==0)
{
return 1;
}
}
}
void insonguyento(int n)
{
for(int i=2;i<=n;i++)
{
if (nguyento(i)==1)
{
cout<<i;
}
}
}
int main(int argc, char** argv) {
int n,a;
nhap(n);
insonguyento(n);
return 0;
}
Bài liên quan
Cái này phải
>=
chứ nhỉCái này 1 khi đã break là thoát rồi thì để
return 0
chi nữa ?Thế lỗi là gì? Bạn hãy mô tả để người khác dễ sửa hơn
Không thông tin lỗi, copy đoạn code vất lên đây rồi bắt người khác tìm lỗi rồi sửa cho mình
mình sorry vì đã không ghi thông tin kỹ lồi là không in ra được số nguyên tố chỉ in ra được sồ 2 và cũng đã sửa thành for(i=n ;i<=n;i++) nhưng cũng không được xin mọi người giúp đỡ
Bạn mới học lập trình à ?
mình mới học đươc 1 tháng
mình đã sữa theo cách của bạn nhưng không được
Thế bạn biết những gì rồi ? Học phần hàm, loop và kiểu
bool
hay_Bool
chưa?Mình nhìn thế này chắc bạn nên bỏ qua bài này và học lại đi, không ổn rồi Đặt
i
=n
mà lại set điều kiện lài <= n
?mình cũng đang tự học thôi mình mới học được phần hàm 2 ngày thôi nên còn nhiều chỗ chưa biết mong bạn giúp đỡ
mình cũng chưa học phần loop và kiểu bool nữa
Bạn mới học phần hàm có 2 ngày à
=> Bạn nên học tiếp hoặc tìm tiếp trên mạng chứ mình thấy kiến thức bạn không ổn rồi !
Thế thì bạn học đi nhé. Nếu chưa học 2 cái đó thì bạn không làm được bài này đâu, hay tối thiểu là kiểm tra số nguyên tố là khó với bạn rồi chứ huống chi tìm số nguyên tố nhỏ hơn n
bạn có thể gợi ý cho mình những video nào không mình tk nhiều
Trước hết là bạn cần học hết cái playlist C này: https://www.youtube.com/playlist?list=PLyiioioEJSxHr5X8RNY3QXUGcjzeZeI7l
hay tối thiểu là được 40 bài trong playlist.
Bạn nên học thêm phần hàm cho chắc và kiểu dữ liệu
_Bool
trong C hoặcbool
trong C++ (thực chất 2 cái này đều có chức năng tương tự nhau)Và quan trọng là hãy học vòng lặp đi nhé! Vòng lặp rất quan trọng!!
Dưới đây là 1 đoạn code đơn giản để in những số nguyên tố bé hơn số nguyên dương n của mình, có gì tham khảo:
P/S: Mình chưa học C++ nên bạn thay đổi code theo ý mình nhé. Ví dụ
printf
thànhcout
vàscanf
thànhcin
cái này ở đâu ra vậy bạn. mình chưa thấy bạn khai báo cái này
bạn có bít bạn đang viết gì ở đây ko?
con trỏ đâu?
đây nữa
Mà bạn học con trỏ chưa vậy?
mình chỉ hoc tới hàm chưa học tới con trỏ int nhap(int &n) su dụng tham chiếu còn nhap(n) để gọi lại hàm trên
bạn đừng dùng hàm nữa, hãy viết tất cả vào ct chính đi. khi nào học và hiểu con trỏ bạn hãy dùng. đến cú pháp con trỏ bạn còn làm sai kìa
cú pháp ko phải vậy. nó phải là ntn: int nhap(int *n)[quote=“duc_nguyen7, post:17, topic:27133”]
nhap(n)
[/quote]
còn chỗ này phải ntn : nhap(&n);
Đừng lấy tư duy C áp đặt vào C++, ở C++ pass by reference và pass by pointer là hai thứ khác nhau nhé.
Đây là pass by reference hình như tiếng việt gọi là truyền tham chiếu. Hàm này tham số được sử dụng trong hàm sẽ trực tiếp thay đổi giá trị của biến được truyền vào, thay vì tạo ra một local variable và copy giá trị như trong pass by value, truyền tham trị.
Còn đây gọi là pass by pointer, truyền con trỏ. Mà con trỏ thì lưu giữ địa chỉ của biến được truyền vào, trên thực tế, truyền bằng con trỏ tuơng tự với pass by value (nhưng trong truờng hợp này, value là address). Để thay đổi được giá trị do con trỏ chỉ vào ta phải sử dụng dereferencing operator (dấu ‘*’) để truy cập giá trị của biến được con trỏ trỏ đến. Trong hàm này thì thứ có thể thay đổi được là biến được con trỏ trỏ đến, không thể thay đổi biến con trỏ -> tuơng tự như pass by value.
Code của bạn Duc Nguyen vấn đề nằm ở điều kiện vòng lặp. Lời khuyên là nên viết thuật toán ra giấy, khi nào thuật toán có thể thực hiện được trên lý thuyết thì mới bắt đầu code. Cũng tuơng tự như làm toán, phải tìm được hướng đi đúng, giải bài toán, rồi mới trình bày.
P/S: Hơi đi lạc đề chút.
cám ơn bạn đã góp ý bài toán này mình đã chạy được nếu không sử dụng hàm ,dùng hàm thì mình vẫn còn nhiều chổ chưa hiểu