01/10/2018, 08:43

Câu hỏi về Hàm, gọi hàm

Em có viết 1 đoạn code để tính tổng các SNT trước n ạ.

#include <iostream>
using namespace std;
int test(int n)
{
	for (int i = 2; i * i < n; i++)
	{
		if (n% i == 0)
		{
			return 0;
		}
		else return 1;
	}

}
int main()
{
	int n;
	cin >> n;
	int tong = 0;
	for (int i = 2; i < n; i++)
	{
		if (test(i))
			tong += i;
	}
	cout << tong;
}

Ở hàm main, nếu em ghi if (test(i) thì kết quả đúng còn if (test(i) == 1) thì kết quả sai ạ. em chưa hiểu chỗ này lắm.

Wake Of GOD viết 10:47 ngày 01/10/2018

int test(int n){ for (int i = 2; i * i < n; i++) { if (n% i == 0) { return 0; } else return 1; }

Bạn nên đọc qua cuốn phong cách lập trình để xem cách viết code sao cho hợp lý nhé.
Hàm này dùng để tính số nguyên tố hả b? Nếu là số nguyên tố thì bạn xem lại cách viết hàm này nhé !

Tuấn UIT viết 10:51 ngày 01/10/2018

Hàm test mà anh ? ở dưới em mới tính ạ.

Wake Of GOD viết 10:53 ngày 01/10/2018

Hàm test dùng đề làm gì vậy?

Tuấn UIT viết 10:59 ngày 01/10/2018

Để test xem số i chạy từ 2 đến n thì số i đó có phải là SNT không. Nếu phải ko trả về 0 còn phải trả về 1 ạ.

Wake Of GOD viết 10:44 ngày 01/10/2018

Vậy bạn thử vào hàm Main chạy thử
int main() {
cout << test(2);
}
xem nó in ra mầy ? tại sao 2 lại không phải số nguyên tố?

Tuấn UIT viết 10:48 ngày 01/10/2018

Tính Số nguyên tố trước n mà anh ? anh đọc kĩ câu hỏi dùm em với @@

Wake Of GOD viết 10:50 ngày 01/10/2018

int test(int n){ for (int i = 2; i * i < n; i++) { if (n% i == 0) { return 0; } else return 1; }

}int main(){ int n; cin >> n; int tong = 0; for (int i = 2; i < n; i++) { if (test(i)) tong += i; } cout << tong;}

Thì bạn chỉ test với số 2 xem cái hàm này có đúng k ấy?

Wake Of GOD viết 10:58 ngày 01/10/2018

Cái hàm test này nếu là
SNT : return 1 không phải thì return 0;
Vậy tại sao với số 2 nó lại return 0 ý mình là thế?

Bài liên quan
0