- Ebook Giải thuật và lập trình Lê Minh Hoàng
- Các thuật toán sắp xếp trong Pascal

Bài tập dãy Fibonaci và số nguyên tố



Dãy FIBONACI là dãy được xác định như sau: F(0) = 0; F(1) = 1 và F(n) = F(n-1) + F(n-2) với n = 2, 3...
Hãy viết chương trình máy tính để nhập từ bàn phím số nguyên dương M (2<M<2000000000), rồi xuất ra màn hình số FIBONACI lớn nhất là nguyên tố và nhỏ hơn M.

Ví dụ: Với M=10 thì các số FIBONACI nhỏ hơn M là: 0, 1, 1, 2, 3, 5, 8. Số 5 là số nguyên tố lớn nhất trong các số FIBONACI nhỏ hơn M. Vậy cần đưa ra màn hình dòng thông báo kết quả: Số cần tìm là: 5.

uses crt;
var j,i,m,a,b,t:longint;

{----------------------}

Function kt(n:longint):boolean;
 var i,d:integer;
  begin
  kt:=false;
  d:=0;
   For i:=1 to n do
    if n mod i=0 then inc(d);
  if d=2 then kt:=true;
 end;

{----------------------}

begin
 clrscr;
 Write('Nhap m= ');
 readln(m);
 a:=0;
 b:=1;
  Repeat
   a:=a+b;
   b:=a+b;
  Until (a>=m) and (b>=m);

   if a<b then begin t:=a;a:=b;b:=t;end;

  Repeat
   a:=a-b;
   b:=b-a;
  Until ( (kt(a)) and (a<m))  or ( (kt(b)) and (b<m) );
If a>b then writeln(a);
 if b>a then writeln(b);

{----------------------}

  readln
 end.



Nặc danh nói...

đề bài sau khó quá mong các bạn giải dùm! Cảm ơn!
( Sử dụng thuật toán quay lui)
Đề:
Cho dãy số nguyên A gồm n phần tử a1,a2,a3,...,an. Tìm cặp chỉ số i,j thỏa mãn: /(a1+a2+...+ai)-(aj+a j+1 +...+an)/ đạt gá trị lớn nhất (1<=i<j<=n).


lúc 21:54 19 tháng 11, 2012
Nặc danh nói...

giai nhin cung de^^


lúc 14:03 6 tháng 1, 2013
Unknown nói...

Sao k ls theo kieu mang de hieu hon n` :)


lúc 21:15 14 tháng 4, 2013
Nặc danh nói...

BINH THUONG
DE THOI MA CHI CAN TACH SAO CO KET QUA BT TREN ROI SO SANH VS CACH TACH KHAC NAK SAU DO NEU LON HON THI LAY NHO HON THI BO


lúc 08:59 18 tháng 4, 2013
Unknown nói...

bai nay mk cug lm dk nhug mk lm khac


lúc 20:01 6 tháng 12, 2013
tieulong nói...

Các bạn giải giúp mình bài này với
Chia N việc cho M máy
Cho N công việc , công việc I hoàn thành trong thời gian t[i]. Các công việc được thực hiên trên M máy công suất như nhau, mỗi máy đều có thể thực hiênk được công việc bất kì trong N việc) mỗi công việc được làm liên tục trên một máy cho đến khi xong .Hãy tổ chức máy thực hiện đủ N công việc sao cho thời gian hoàn thành càng nhỏ càng tốt.

Dữ liệu: XL07.INP

- Dòng đầu gồm 2 số nguyên N,M
- Dòng tiếp theo là N số T1,T2..Tn

Kết quả: Xl07.OUT :

- Dòng đầu là thời gian hoàn thành n công việc
- M dòng sau dòng i+1 ghi các số hiệu công việc thực hiên trên máy i

Ví dụ:
XL08.INP
6 3
2 5 8 1 5 1
XL08.OUT
8
3
2 1 4
5 6


lúc 22:37 26 tháng 12, 2013
Unknown nói...

VIỆT NAM CÙI BẮP


lúc 14:22 4 tháng 1, 2014
Nặc danh nói...

giải giúp với: in ra số thứ n trong dãy số nguyên tố với n nhập vào, dùng vòng lặp nha


lúc 08:13 11 tháng 7, 2014
Unknown nói...

Cách giải khác như vầy đúng không vậy mấy bạn??
uses crt;
function nguyento(m:integer):boolean;
var i,dem:integer;
begin
nguyento:=false; dem:=0;
for i:=1 to m do
if (m mod i =0) then inc(dem);
if dem=2 then nguyento:=true;
end;
var a1,a2,a3,max,n:integer;
begin
clrscr;
write('Nhap n: '); readln(n);
a2:=0; a3:=1; max:=2;
repeat
a1:=a2;
a2:=a3;
a3:=a1+a2; writeln(a3);
if (a3>max) and (nguyento(a3)=true) then max:=a3;
until a3>=n-a1;
write('Gia tri do la: ',max);
readln;
end.


lúc 10:55 14 tháng 2, 2016
Nặc danh nói...

phần kt số nt nếu mk cho chạy to lên thì sẽ lâu
nên chỉnh phần kt số nt thành như sau:
i:=2;d:=0;
while (n mod i<>0) and (i<=trunc(sqrt(n))) then d:=d+1;
if d>trunc(sqrt(n)) then kt:=true
else kt:=false;
Nếu có gì sai thì các bạn thông cảm


lúc 16:51 28 tháng 10, 2016
Unknown nói...

Khoa Trần Đăng bài nào vậy?


lúc 10:20 12 tháng 11, 2016
Nặc danh nói...

Sao nhập vào 5 lại cho ra đáp án là 5 lỗi hay gì?


lúc 14:57 4 tháng 8, 2020

Đăng nhận xét

Thành viên Blog

Tổng số lượt xem trang

Translate

Return to top of page Copyright © 2012 | Theme by Hack Tutors. Cung cấp bởi Blogger.
Các code pascal trong blog được sưu tầm, lựa chọn sao cho tối ưu nhất. Cảm ơn các tác giả đã viết thuật toán.