Đến nội dung

Hình ảnh

Số nguyên tố rút gọn


  • Please log in to reply
Chủ đề này có 4 trả lời

#1
PlanBbyFESN

PlanBbyFESN

    Thiếu úy

  • Điều hành viên OLYMPIC
  • 637 Bài viết

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

 


:huh:


#2
trananhduong62

trananhduong62

    Hạ sĩ

  • Thành viên
  • 81 Bài viết

anh cho em hỏi pascal có khả năng phân tích thành nhân tử ko


trananhduong62 :icon6:  :icon6:  :icon6:  :ukliam2: GOOD!


#3
Mystic

Mystic

    Thượng sĩ

  • Thành viên
  • 240 Bài viết


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


#4
Duongdz2k7

Duongdz2k7

    Binh nhất

  • Thành viên mới
  • 25 Bài viết


 

 

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.

 

oh no! :(

bài bạn dài và khó hiểu quá!

Bài này ngắn và dễ hiểu hơn !

thực ra bạn chỉ cần tạo hai chương trình con  :D

1 là kt số nguyên tố,2 là số nguyên tố rút gọn của số đó (chạy từ 2-n rồi kt tính nguyên tố và chia hết xong thì bỏ qua chứ ko cần xóa các phần tử trùng nhau, làm như này:

Code :

program bt1;
uses crt;
var a,i,b,j,d,n:longint;
    c:array[1..10000]of longint;
function kt(n:longint):boolean;
var i:longint;
a:boolean;
begin
     a:=true;
  for i:=2 to n-1 do
if n mod i =0 then
a:=a and false;
if n<2 then
kt:=false
else
kt:=a;
end;
function t(n:longint):longint;
var i:longint;
begin
     t:=0;
     if (kt(n)) then t:=n
     else
       for i:=2 to n do
         if ((n mod i=0)and(kt(i))) then t:=t+i;
end;
begin
write('   Nhap n= ');
readln(n);
writeln('   So nguyen to rut gon cua ',n,' la ',t(n));
write('nhap a:');
readln(a);
write('nhap b:');
readln(b);
j:=0;
d:=0;
for i:= a to b do
if t(n)=t(i) then
begin
inc(d);
inc(j);
c[j]:=i;
end;
writeln('co ',d,' so co cung sntrg la:');
for i:=1 to d do
write(c[i]:6);
readln;
end.

Bài viết đã được chỉnh sửa nội dung bởi Duongdz2k7: 27-06-2021 - 23:22

                   Học , học nữa , học mãi  :closedeyes:

Luôn không ngừng cố gắng để đạt thành quả :D  :like


#5
tkd23112006

tkd23112006

    Binh nhất

  • Thành viên mới
  • 24 Bài viết

 program songtorutgon;

uses crt;
function sum(n:longint):longint;
var i,s:longint;
begin
i:=2;
s:=0;
while n>1 do
begin
if n mod i=0 then inc(s,i);
while n mod i=0 do n:=n div i;
inc(i);
end;
sum:=s;
end;
var n,a,b,i,d:longint;
begin
repeat
clrscr;
write('n=');readln(n);
until (n>1) and (n<1000000);
writeln('So nguyen to rut gon cua N: ',sum(n));
write('Nhap a,b:');readln(a,b);
writeln('Cac so co cung so nguyen to rut gon voi N: ');
for i:=a to b do
if sum(n)=sum(i) then
begin
write(i,' ');
inc(d);
end;
writeln;
writeln('Co ',d,' so');
readln;
end.

Nếu có một bài toán bạn không giải được thì chắc chắn cũng có một bài toán khác dễ hơn mà bạn có thể giải được. Hãy tìm nó.





0 người đang xem chủ đề

0 thành viên, 0 khách, 0 thành viên ẩn danh