Tin học Tây Sơn

Phân rã nguyên tố (4 điểm)

Go down

Phân rã nguyên tố (4 điểm)

Bài gửi by Admin on Thu Dec 13, 2018 2:01 pm

 Khi nghiên cứu về số nguyên tố, Goldbach dự đoán rằng: Mỗi số nguyên dương không nhỏ hơn 2 có thể viết thành tổng của không quá 3 số nguyên tố.
Hãy viết chương trình nhập vào một số tự nhiên N (2≤N≤106) và biểu diễn số N thành tổng của các số nguyên tố với số số hạng là ít nhất.
Dữ liệu vào: Số N được nhập từ bàn phím.
Dữ liệu ra: Xuất lên màn hình các viết số N thành tổng các số nguyên tố.
Ví dụ:
Input (bàn phím)
Output (màn hình)
N= 5
5= 5
N= 18
18= 13+5
N=2018
2018=2011 + 7
N= 11111
11111= 11093 + 5 +13
avatar
Admin
Admin
Admin

Posts : 687
Reputation : -10042
Join date : 16/11/2015
Age : 29

Xem lý lịch thành viên http://tinhocts.forumvi.com

Về Đầu Trang Go down

Re: Phân rã nguyên tố (4 điểm)

Bài gửi by mainhatthong2004 on Thu Dec 13, 2018 2:02 pm

Code:
program bai5;
uses crt;
var n,i,j:integer;
//----------------------------
function nto(x:integer):boolean;
var y:integer;
begin
nto:=true;
if x<2 then
begin
nto:=false;
exit;
end;
for y:=2 to trunc(sqrt(x)) do
if x mod y=0 then
begin
nto:=false;
exit;
end;
end;
//---------------------------------------
begin
clrscr;
write('nhap n '); readln(n);
if n<2 then
begin
write('ko co');
readln;
exit;
end;
write(n,'=');
if nto(n) then
write(n) else
for i:=n-1 downto 2 do
if (nto(i)) and (nto(n-i)) then
begin
write(i,'+',n-i);
break;
end;
if i=2 then
for i:=n-1 downto 2 do
for j:=n-i-1 downto 2 do
if (nto(i)) and (nto(j)) and (nto(n-i-j)) then
begin
write(i,'+',j,'+',n-i-j);
readln;
exit;
end;
readln;
end.
avatar
mainhatthong2004
Teen cá tính
Teen cá tính

Posts : 85
Reputation : -369988
Join date : 18/06/2018

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Phân rã nguyên tố (4 điểm)

Bài gửi by nguyen77 on Thu Dec 13, 2018 2:02 pm

Code:

program bai5;
uses crt;
var n,i,j:integer;
//----------------------------
function nt(x:integer):boolean;
var j:integer;
begin
nt:=true;
if x<2 then
begin
nt:=false;
exit;
end;
for j:=2 to trunc(sqrt(x)) do
if x mod j=0 then
begin
nt:=false;
exit;
end;
end;
//---------------------------------------
begin
clrscr;
write('nhap n '); readln(n);
if n<2 then
begin
        write('ko co');
        readln;
        exit;
end;
write(n,'=');
if nt(n) then
        write(n)
                else
                for i:=n-1 downto 2 do
                        if (nt(i)) and (nt(n-i)) then
                                begin
                                        write(i,'+',n-i);
                                        break;
                                end;
if i=2 then
for i:=n-1 downto 2 do
for j:=n-i-1 downto 2 do
if (nt(i)) and (nt(j)) and (nt(n-i-j)) then
        begin
                write(i,'+',j,'+',n-i-j);
                readln;
                exit;
        end;
readln;
end.
avatar
nguyen77
Năng động
Năng động

Posts : 75
Reputation : -309991
Join date : 18/06/2018

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Phân rã nguyên tố (4 điểm)

Bài gửi by Nguyễn Văn Biên on Thu Dec 13, 2018 2:02 pm

Spoiler:
Code:
program Bai_4;
uses crt;
var n,i,j,k:longint;

function ngto(x:longint):boolean;
var t:longint;
begin
        ngto:=false;
        if x<2 then exit;
        for t:=2 to trunc(sqrt(x)) do
        if x mod t = 0 then exit;
        ngto:=true
end;

procedure hd;
begin
        if ngto(n) then begin write(n,' = ',n); exit end;
        if n mod 2 = 0 then
        for i:=2 to n-1 do
        for j:=i to n-i do
        if (ngto(i)) and (ngto(j)) and (i+j=n) then
        begin write(n,' = ',i,'+',j); exit end;
        for i:=2 to n-1 do
        for j:=i to n-i do
        for k:=j to n-j do
        if (ngto(i)) and (ngto(j)) and (ngto(k)) and (i+j+k=n) then
        begin write(n,' = ',i,'+',j,'+',k); exit end
end;

begin
        clrscr;
        repeat write('N = '); readln(n) until (n>=2) and (n<=100000);
        hd;
        readln
end.


Được sửa bởi Nguyễn Văn Biên ngày Wed Dec 19, 2018 8:35 pm; sửa lần 3.

_________________

My:
- XDA Account
- Blog
- Game

...
avatar
Nguyễn Văn Biên
Recognised Member & Recognised Developer & Protected Member & Super Administrator
Recognised Member & Recognised Developer & Protected Member & Super Administrator

Posts : 220
Reputation : 1129923
Join date : 18/06/2018
Age : 15
Location : ?

Xem lý lịch thành viên https://bien2004official.blogspot.com

Về Đầu Trang Go down

Re: Phân rã nguyên tố (4 điểm)

Bài gửi by quantran on Thu Dec 13, 2018 2:03 pm

code:
program bai5;
var
n,i,j,k:integer;
//----------------------------
function nto(x:integer):boolean;
var
        j:integer;
begin
        nto:=true;
                if x<2 then
                        begin
                                nto:=false;
                                exit;
                        end;
                for j:=2 to trunc(sqrt(x)) do
                        if x mod j=0 then
                                begin
                                        nto:=false;
                                        exit;
                                end;
end;
//---------------------------------------
begin
write('nhap n '); readln(n);
        if n<2 then
                write('ko co')
        else
        begin
        if nto(n)=true then
                write(n,' = ', n)
        else
        for i:=n-1 downto 2 do
                if (nto(i)) and (nto(n-i)) then
                        begin
                                write(n,'=',i,'+',n-i);
                                break;
                        end;
        if i=2 then
                for k:=n-1 downto 2 do
                for j:=n-k-1 downto 2 do
                        if (nto(k)) and (nto(j)) and (nto(n-k-j)) then
                                begin
                                        write(n,'=',k,'+',j,'+',n-k-j);
                                        readln;
                                        exit;
                                end;
        end;
readln;
end.
avatar
quantran
Năng động
Năng động

Posts : 77
Reputation : -339986
Join date : 18/06/2018
Age : 14
Location : Binh Thuan-Tay Son-Binh Dinh

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Phân rã nguyên tố (4 điểm)

Bài gửi by thanhtruc on Thu Dec 13, 2018 2:03 pm

Code:
program Phan_ra;
uses crt;
var n,i,j:integer;

function kt(n:integer):boolean;
var i:integer;
begin
kt:=true;
if n < 2 then
begin
kt:=false;
exit;
end;
for i:=2 to trunc(sqrt(n)) do
if n mod i = 0 then
begin
kt:=false;
exit;
end;
end;

BEGIN
clrscr;
write('nhap n :'); readln(n);
if kt(n) then write(n,' = ',n) else
for i:=n-1 downto 2 do
if (kt(i)) and (kt(n-i)) then
begin
write(n, '=',i,'+',n-i);
break;
end;

if i=2 then
for i:=n-1 downto 2 do
for j:=n-i-1 downto 2 do
if (kt(i)) and (kt(j)) and (kt(n-i-j)) then
begin
write(n,' = ',i,'+',j,'+',n-i-j);
exit;
end;
readln;
end.

avatar
thanhtruc
Nhiệt tình
Nhiệt tình

Posts : 45
Reputation : -189988
Join date : 25/06/2018
Age : 14
Location : TNPPTSBĐ

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Phân rã nguyên tố (4 điểm)

Bài gửi by Tạ Thúy Phượng on Thu Dec 13, 2018 2:03 pm

CODE:
program bai5;
uses crt;
var
       n,i,j:longint;

//----------------------------

function nto(x:longint):boolean;
var
       k:longint;
begin
       nto:=true;
       if x<2 then
               begin
               nto:=false;
               exit;
               end;
       for k:=2 to trunc(sqrt(x)) do
       if x mod k=0 then
               begin
               nto:=false;
               exit;
               end;
end;

//---------------------------------------
begin
       clrscr;
       write('nhap n '); readln(n);
       if n<2 then
               begin
               write('ko co');
               readln;
               exit;
               end;
       write(n,'=');
       if nto(n) then
               write(n) else
       for i:=n-1 downto 2 do
               if (nto(i)) and (nto(n-i)) then
                       begin
                       write(i,' + ',n-i);
                       break;
                       end;
               if i=2 then
               for i:=n-1 downto 2 do
                       for j:=n-i-1 downto 2 do
                       if (nto(i)) and (nto(j)) and (nto(n-i-j)) then
                               begin
                               write(i,' + ',j,' + ',n-i-j);
                               readln;
                               exit;
                               end;
       readln;
end.
avatar
Tạ Thúy Phượng
Năng động
Năng động

Posts : 66
Reputation : -259993
Join date : 18/06/2018
Location : Binh Thuan-Tay Son-Binh Dinh

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Phân rã nguyên tố (4 điểm)

Bài gửi by huynhtanluc on Thu Dec 13, 2018 3:43 pm

Code:
Program b5;
uses crt;
var n,i,j,k:integer;

Function nt(x:integer):boolean;
var j:integer;
begin
nt:=false;
if x<2 then exit;
for j:=2 to trunc(sqrt(x)) do
if x mod j=0 then
begin
nt:=false;
exit;

end;
nt:=true;
end;

Begin
clrscr;
write('Nhap n: '); readln(n);
if n<2 then
write('Khong co')
else
begin
if nt(n)=true then
write(n,' = ', n)
else
for i:=n-1 downto 2 do
if (nt(i)) and (nt(n-i)) then
begin
write(n,'=',i,'+',n-i);
break;
end;
if i=2 then
for k:=n-1 downto 2 do
for j:=n-k-1 downto 2 do
if (nt(k)) and (nt(j)) and (nt(n-k-j)) then
begin
write(n,'=',k,'+',j,'+',n-k-j);
readln;
exit;
end;
end;
readln;
End.
avatar
huynhtanluc
Năng động
Năng động

Posts : 63
Reputation : -299984
Join date : 18/06/2018

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Phân rã nguyên tố (4 điểm)

Bài gửi by Sponsored content


Sponsored content


Về Đầu Trang Go down

Về Đầu Trang


 
Permissions in this forum:
Bạn không có quyền trả lời bài viết