[Video] Lập trình C/C++ - Giải các bài tập vòng lặp - Part 4

Có thắc gì các bạn hỏi bên dưới nhé !

2 Likes

Em k hiểu tại sao có điều kiện là j <= (int)sqrt((float)i)

#include <stdio.h>
#include <stdlib.h>
// bài 4: Tính Tổng các nguyên tố <n(0<n<50)
int main()
{
int n;

do{
	printf("\nNhap vao n (0 < n < 50) = ");
	scanf("%d", &n);

	if(n <= 0 || n >= 50)
	{
		printf("\nGia tri n khong hop le. Xin kiem tra lai !");
	}
}while(n <= 0 || n >= 50);
int Sum=0;

if (n>2)
{
Sum=2;
}

for(int i = 3; i < n; i+=2)
{
	// Kiểm tra xem i có là số nguyên tố không ?
	bool Check = true;

			for(int j = 3; j <= (int)sqrt((float)i); j += 2)
			{
				if(i % j == 0)
				{
					Check = false;
					break;
				}
			}
		}


	if(Check == true)
	{
		Sum = Sum + i; // i là nguyên tố.
	}
}
printf("\nKet qua la: %d", Sum);

getch();

}

Nghĩa là những số j được biến i dùng để kiểm tra (lấy phần dư để kiểm tra xem có chia hết hay không?) thay đổi trong đoạn j = 3 đến j = căn bậc 2 của i. Nếu trong đoạn đó mà tồn tại số j nào khiến số i chia hết, nghĩa là i không phải số nguyên tố.

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?