

Hãy luôn nhớ cảm ơn và vote 5*
nếu câu trả lời hữu ích nhé!
#include <bits/stdc++.h>
using namespace std;
int check(int x) {
for (int i = 2; i * i <= x; ++i)
if (x % i == 0) return false;
return true;
}
signed main() {
int n;
cin >> n;
if (n < 2) cout << -1; else {
while (!check(n)) --n;
cout << n;
}
}
Hãy giúp mọi người biết câu trả lời này thế nào?
![]()
`Ý` `tưởng` `làm` `bài`:
`Bước` `1`: Xây dựng hàm kiểm tra số nguyên tố.
`Bước` `2`: Duyệt từ n-1 (vì đề bài yêu cầu nhỏ hơn n) đến 2 (vì 2 là số nguyên tố nhỏ nhất) nếu thoả mãn thì dừng lại và in ra số đó.
_______________________________________________________________
`Code` `C`++:
#include <bits/stdc++.h>
using namespace std;
int prime(int x) {
for (int i = 2; i <= sqrt(x); i++)
if (x % i == 0)
return 0;
return 1;
}
int main() {
int n,i;
cin >> n;
for (i=n-1; i>=2; i--)
if (prime(i))
break;
cout << i;
}
__________________________________________________________________
`@``kieu`
//Xin Hay Nhất!
Hãy giúp mọi người biết câu trả lời này thế nào?
![]()
Bảng tin
90
2206
112
do các số nguyên tố < 10^7 cách nhau không nhiều (chắc chắn bé hơn 200) nên nếu time limit = 1s thì kiểm tra O(n^1/2) cũng sẽ không tle :)