

Số đặc biệt là số mà số lượng các ước số nguyên dương của nó là một số nguyên tố. Ví dụ số 4 là một số đặc biệt vì số lượng các ước của nó là 3 mà 3 là một số nguyên tố, còn số 10 không phải là một số đặc biệt vì số lượng các ước của nó là 4.
Yêu cầu: Hãy kiểm tra xem nếu số N là số đặc biệt in ra “YES”, ngược lại thì in ra “NO”.
Dữ liệu vào: Đọc từ file BAI2.INP gồm một dòng
Dữ liệu ra: Ghi ra file BAI2.OUT là “YES” nếu N là số đặc biệt ngược lại ghi ra “NO”.
Ví dụ:
BAI2.INP
4 10
BAI2.OUT
YES NO
Giải thích
Số 4 có 3 ước là: 1,2,4
Số 10 có 4 ước 1,2,5,10
Hãy luôn nhớ cảm ơn và vote 5*
nếu câu trả lời hữu ích nhé!
Giải thuật: Ta thấy, số số 3 ước là bình phương của 1 số nguyên tố.
Ví dụ: `5^2 = 25` `-` `5` là số nguyên tố, `25` có `3` ước: `1;5;25`
Tương tự: `3^2=9` `-` `9` có 3 ước: `1;3;9`
....
Code cụ thể:
#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
#define ll long long
#define f ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
using namespace std;
bool snt(ll n)
{
if(n<2) return false;
if(n==2) return true;
if(n%2==0) return false;
for(ll i=3;i<=sqrt(n);i+=2)
{
if(n%i==0) return false;
}
return true;
}
bool sd(ll a)
{
ll Sqrt = sqrt(a);
if(Sqrt*Sqrt==a) return true;
else return false;
}
int main()
{
f
ll a;
cin>>a;
if(sd(a)) cout<<"YES";
else cout<<"NO";
}
//by nsvdlvtHãy giúp mọi người biết câu trả lời này thế nào?
![]()
import math
def kiem_tra_snt(n):
if n < 2:
return False
else:
count = 0
for i in range(1, int(math.sqrt(n) + 1)):
if n % i == 0:
count += 1
if count > 1:
return False
return True
def dem_uoc(n):
uoc = []
for i in range(1, int(math.sqrt(n) + 1)):
if n % i == 0:
uoc.append(i)
if i != n // i:
uoc.append(n // i)
return len(uoc)
def main():
with open("a.inp", "r") as filein, open("a.out", "w") as fileout:
n = int(filein.readline())
if kiem_tra_snt(dem_uoc(n)):
fileout.write("YES")
else:
fileout.write("NO")
if __name__ == "__main__":
main()Hãy giúp mọi người biết câu trả lời này thế nào?
![]()
Bảng tin
0
4
0
b hn nói là snt với ước
0
4
0
mà dùng scp nên m chx hiểu
0
4
0
mà dùng scp nên mik chx hiểu lắm
510
11040
283
thực ra ta cũng có thể làm bằng cách đếm ước, nhưng cách này sẽ tối ưu hơn
0
4
0
nếu dùng cách đếm ước cg đc chứa bn
510
11040
283
dùng cách đếm ước cũng được ạ, nhưng nó sẽ không tối ưu bằng cách này, thì khi đi thi bài theo cách của m sẽ đc điểm cao hơn.
0
4
0
oke bn
0
4
0
mik hiểu r=)