9.29.2017

Dãy số hạnh phúc

Dãy số tự nhiên a1, a2,.., ak được gọi là hạnh phúc nếu nó thỏa mãn các điều kện sau :
-   Dãy trên là dãy giảm  dần .
-   Với mọi  i (1<i<=k)  ai hoặc là số nguyên tố, hoặc phải là ước của một trong các số    a1, a2,.., ai-1 .
Em hãy viết chương trình để: Nhập vào một số N từ bàn phím và in ra màn hình một dãy số hạnh phúc dài nhất với số hạng đầu tiên là N.
     Ví dụ:
        Nhập N                               Đọc ra màn hình
        8                                          DAY THOA MAN: 8  7  5 4  3  2  1

                                                            Lời giải tham khảo
uses crt;
 var a: array[1..1000]of integer;
        i,j,k,n,d:integer;
        kt:boolean;
   function nt(n:longint):boolean;
      var i:longint;
      begin
      if n<2 then nt:=false
      else begin
       i:=2;
       while (i<=sqrt(n)) and (n mod i<>0) do inc(i);
       nt:=(i>sqrt(n));
       end;
       end;
 BEGIN
 clrscr;
 write('vao n=');readln(n);
 if n=2 then write(n,'  ',1)
 else
 begin
  d:=1; a[1]:=n;
 for i:= n-1 downto 1 do
  begin
    if(nt(i)) then  begin inc(d);a[d]:=i;a[d]:=i;end
          else
            begin
              kt:=false;
              for j:=1 to d-1 do
              if a[j] mod i=0 then kt:=true;
              if kt  then begin
                             inc(d);
                             a[d]:=i;
                          end;
            end;
   end;
  for i:=1 to d do write(a[i],'  ');
 end;
 readln;
 END.

10 comments:

Cảm ơn bạn đã nhận xét