Bài tập: Số nguyên tố rút gọn của một số tự nhiên n chính là tổng các ước nguyên tố của n.
Ví dụ: n=252=2.2.3.3.7 (n có 3 ước nguyên tố là 2, 3 và 7)
Số nguyên tố rút gọn của n là 2+3+7=12
Yêu cầu: a/ Nhập số tự nhiên n từ bàn phím, in ra số nguyên tố rút gọn của n. (1<n<1000000)
b/ Nhập 2 số nguyên a, b không vượt quá 10000 (a<b). In ra các số có cùng số nguyên tố rút gọn với n trong đoạn a đến b và số lượng các số tìm được.
Ví dụ:
Nhap n: 252
So nguyen to rut gon cua n: 12
Nhap a, b: 1 200
Cac so co cung so nguyen to rut gon voi n:
35 42 84 126 168 175
Co 6 so
program b2;
uses crt;
var i,n,j,k,l,p,t,a,b,x:longint;
c,d:array[1..1000] of longint;
function ktm(n:longint):longint;
var i,j,l,k,t:longint;
c:array[1..1000] of longint;
begin
i:=2;l:=0;
repeat
while n mod i<>0 do
i:=i+1;
l:=l+1;
c[l]:=i;
n:=n div i;
until n=1;
for i:=1 to l-1 do
begin
j:=i+1;
while j<=l do
if c[i]=c[j] then
begin
for k:=j to l do
c[k]:=c[k+1];
l:=l-1;
end else j:=j+1;
end;
t:=0;
for i:=1 to l do
t:=t+c[i];
ktm:=t;
end;
begin
clrscr;
{cau a}
repeat
write('Nhap n:');readln(n);
if (1<n)and(n<1000000) then break;
writeln('Nhap 1<n<1000000');
until false;
x:=ktm(n);
writeln('So nguyen to rut gon cua ',n,' la:',x);
{cau b}
repeat
write('Nhap a:');readln(a);
if a<=10000 then break;
writeln('Nhap a<=10000');
until false;
repeat
write('Nhap b:');readln(b);
if b>a then break;
writeln('Nhap b<a');
until false;
for i:=a to b do
if (ktm(i)=ktm(n)) then
begin
k:=k+1;
write(i,' ');
if k mod 20=0 then writeln;
end;
writeln;
writeln('Co ',k,' so');
readln
end.
>>> Nếu bạn luôn buồn phiền hãy dùng hy vọng để chữa trị <<<
Và ...
>>> Không bao giờ nói bạn đã thất bại
Cho đến khi đó là nỗi lực cuối cùng của bạn
Và không bao giờ nói rằng:
Đó là nỗi lực cuối cùng của bạn
Cho tới khi bạn đã thành công >>>
~ Mystic Lâm