вівторок, 13 березня 2018 р.

Алгоритм знаходження простих чисел


Практична робота «Циклічні алгоритми на мові Pascal»
1.Скласти алгоритм знаходження всіх дільників натурального числа А. Протестуйте алгоритм для  натуральних значень А: а)12; б)32; в)60; г)41; д)100;  е)20; є)81; ж)29.
program  Dilnyk_1;                                                                                 {назва    алгоритму}
var  a,n,c,d: integer;                    {оголошення  змінних величин: a,n,c,d - це цілі числа}
begin                                                                                             { початок    алгоритму}
    readln(a);                                  {оголошення  про введення  числа a - це ціле число}
    n:=1;                                                      {присвоєння  першого дільника - це число 1}
    while  (n <= sqrt(a) )  do  begin        {цикл з передумовою ; поки n<= квадр. корінь з а}
       c:=a mod n;                                                                {с  присвоємо остачу від  а:n}
       d:=a div n;                                                        {d присвоємо цілу частину від  а:n}
       if c = 0 then begin                   {розгалуження при діленні а:n націло, то виводимо n}
          writeln(n);                                                  {виведення  числа n – дількника числа А}
if n <> d then writeln(d );              {розгалуження якщо а:n націло і n ≠ d, то виводимо d}
       end;                                           {закінчення неповного розгалуження з умовою c = 0}
       inc(n);                           {присвоєння цілій змінній  n – наступного числа, тобто  n+1}
    end;                            {закінчення циклу з передумовою  при  n>квадр. корінь з а }
end.                                                                                                     {закінчення алгоритму}
2. Скласти алгоритм знаходження суми цифр натурального числа А. Протестуйте алгоритм для  натуральних значень А: а)4444; г)1023456.
program  SUMMA_2;                                                                           {назва    алгоритму}                                                                          
var  a, x, i, s: integer;                  {оголошення  змінних величин: a, x, i, s - це цілі числа}   
begin                                                                                                  { початок    алгоритму}
     writeln('Введіть ціле число');    {оголошення  про введення  числа a - це ціле число}
     readln(a);  x:=a;                                   {залишку х від числа а спочатку  присвоємо  а}
     s:=0;                                                                      {сумі цифр  s  у числі  а присвоємо 0}
     while (x <> 0) do begin                        {цикл з передумовою  поки  x ≠ 0, то виконати}
       s := s + (x mod 10);                {до суми цифр  s  у числі  а присвоємо чергову цифру}
       x := x div 10;           {залишку х від числа а  присвоємо  число без останньої цифри}
     end;                                                          {закінчення циклу з передумовою,  при  x = 0}
     writeln( 'Сумма цифр числа ',a,' = ', s );                    {виводимона екран  суму цифр  s}
end.                                                                                                    {закінчення алгоритму}.
3. Скласти алгоритм знаходження простих чисел, (це числа, що мають тільки два дільники. Протестуйте алгоритм: LIMIT = 20; LIMIT = 500; LIMIT = 500.
program  PRIME_2;                                                                             {назва    алгоритму}                                                                          
const  LIMIT = 20;                                           {оголошення  постійної величини: LIMIT}   
var  i, j, lim: integer;                   {оголошення  змінних величин: a, x, i, s - це цілі числа}   
begin                                                                                                    {початок  алгоритму}
  writeln;                                                   {друк на екрані  простих чисел з нового рядка}
  for i:=1 to LIMIT do begin     {цикл з лічильником від 1 до LIMIT та аналіз простоти}
      j:=2; lim:=round(sqrt(i));               {перше просте число 2;  і до  lim =квадр. корінь з і}    
      while (i mod j <> 0) and (j <= lim) do inc(j);             {вкладений цикл з передумовою}   
      if (j > lim) then write( i,' ' );       {неповне розгалуження якщо j > lim, то виводимо i }    
  end;                            {закінчення циклу з лічильником,  вихід  з циклу при  і = LIMIT}
end.                                                                                                    {закінчення алгоритму}.


Немає коментарів:

Дописати коментар