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.

Câu hỏi trong lớp Xem thêm