30/09/2018, 20:35
Xin hướng dẫn để làm bài c++ cơ bản
đây là code của mình:
#include < iostream>
#include < conio.h>
#include < math.h>
bool ktngto(int n);
void inso(int n);
void tong(int n);
using namespace std;
int main()
{
int n;
cout << endl << "nhap vao 1 so: ";
cin >> n;
if(ktngto(n)==false)
{
cout << endl << n << " khong phai so nguyen to";
}
else{ cout << endl << n << " la so nguyen to"; }
_getch();
inso(n);
_getch();
tong(n);
return 1;
}
bool ktngto(int n)
{
if (n < 2)
{
return false;
}
else{
for (int i = 2; i <= sqrt(n); i++)
{
if (n%i == 0)
{
return false;
}
}
}return true;
}
void inso(int n)
{
int tong=0;
for (int i = 2; i <= n; i++)
{
if (ktngto(n) == true)
{
if (ktngto(i) == true)
{
cout << endl << i << "
";
tong += i;
}
}
}
Cho mình hỏi mình muốn tính tổng nhưng chưa biết cách
vd nhập vào 1 số nguyên tố là 11 thì sẽ có các số nguyên tố từ 1->11 là: 2,3,5,7,11->tổng của chúng là 56
vậy làm sao để tính tổng của chúng là 56
các bác thông cảm em mới học nên hơi mơ hồ
Bài liên quan
Khi bạn nhập là 11 thì bạn kiểm tra xem các số trước 11 có là số nguyên tố không ? Chỗ này có thể dùng vòng for hoặc while
Nếu có thì bạn cộng vào một biến tổng.
mình đã làm như bạn nói
-Kiểm tra số vừa nhập có phải số nguyên tố hay không
-dùng vòng lặp for:for(i=2;i<=n;i++)
-gán sum:sum+=i;
-xuất sum ra:cout<<endl<<sum;
nhưng kết quả không như mong muốn
máy xuất ra 5,10,17,28 chứ không xuất ra số 56 nhu mong muốn
code for của mình nhưu này nè:
Chỉ mình với
Bạn cần phải gán trị cho biến sum trước khi thực hiện dòng for.
Sau khi thực hiện dòng for bạn mới xuất biến sum ra.
Cách của bạn làm cho mỗi lần kiểm tra đúng số ngto nó sẽ xuất ra 1 lần cho đến khi nào hết dòng lặp.
hàm void tong của bạn đâu rồi ấy nhỉ
mình đã gán sum=0 trước khi bắt đầu phép toán
mình cũng hiểu là mỗi 1 lần cộng i nó sẽ xuất ra i
phép toán của mình hiện tại là nó như thế này:
nhập số 11 sẽ ra các số nguyên tố là 2,3,5,7,11
máy sẽ làm như sau:
-lấy 2+3=5 ->xuất 5 ra màn hình
-kiểm tra xem i có nhỏ hơn n không không thì là tiếp
-lấy 5+5=10 -> xuất 10 ra màn hình
…
cuối cùng máy liệt kê các kết quả 5,10,17,28 ra màn hình
làm sao để nó chỉ xuất 28 cho mình nhỉ
mình có biết làm đâu nó xuất ra tùm lum nên mình del nó rồi
Bạn bõ cái dòng cout trong vòng lặp đi rồi đặt nó ra ngoài.
à mình hiểu rồi cảm ơn bạn rất rất nhiều cái tội để tính tổng trong vòng lặp for
code của mình
bạn chỉ mình thêm như code của mình nó chỉ cộng tới số đứng trước n(vd nhập 11 thì nó chỉ cộng 2,3,5,7)
nếu mình muốn nó cộng cả 11 thì phải làm sao
tớ sửa điều kiện thành == n thì nó trả về kq =0
bõ dòng này đi. nó dư rồi. bạn chạy lại xem.
nếu bỏ nó đi thì nhập vào 1 số không phải ng tố nó cũng cộng ùi còn gì
đã thử ùi và vẫn chỉ trả về kết quả 28 mong bạn chỉ giúp
mình vừa chỉnh lại phần code kiểm tra của bạn.
bạn có thể dùng code này để cộng kết quả