Có thắc gì các bạn hỏi bên dưới nhé !
[Video] Lập trình C/C++ - Giải các bài tập vòng lặp - Part 4
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