SNT rút gọn của 1 số tự nhiên n là tổng các ước nguyên tố của n. VD: n=252=2.2.3.3.7 thì SNT rút gọn của n là 2+3+7=12. Nhập 2 số nguyên a, b (a<b). In ra trong đoạn từ a->b số lượng các số có cùng SNT rút gọn với n .nếu ko có thì ghi KHÔNG vd nhập 252 1 200 output 6
1 câu trả lời
uses crt;
var n,a,b,cntp,s,i,j,cnt:longint;
np:array[0..100000] of boolean;
p, ds:array[0..100000] of longint;
const lim = trunc(1e5);
procedure sieve;
var i,j:longint;
begin
for i:=2 to trunc(sqrt(lim)) do
if not np[i] then
for j:=i to lim div i do
np[j*i]:=true;
for i:=2 to lim do
if not np[i] then
begin
inc(cntp);
p[cntp]:=i;
end;
end;
begin
readln(n,a,b);
sieve();
for i:=1 to cntp do
begin
j:=(a div p[i] + 1)*p[i];
while j <= b do
begin
inc(ds[j], p[i]);
inc(j, p[i]);
end;
if n mod p[i] = 0 then inc(s, p[i]);
end;
for i:=a to b do
if ds[i] = s then inc(cnt);
writeln(cnt);
readln;
end.
