Şənbə, 27.07.2024, 10:09
İnformatikanın məktəbdə tədrisi
Baş səhifə Qeydiyyat Giriş
e-mail: informatik-az@mail.ru · RSS
Menyu
Fotoşəkillər
Giriş forması
Sorğu
Müəllim kimi informatika dərslərində tez-tez istifadə edirəm:
Cavabların sayı: 9419
Faydalı keçidlər

  • ict.edu.az
  • ict.az
  • telekommunikasiya.edu.az
  • İnf-math.narod.ru
  • Millibyte.az
  • kayzen.az/blog/informatika
  • alqoritm.ucoz.org
  • mincom.gov.az
  • Facebook-da
    Təqvim
    «  İyul 2024  »
    B.e.Ç.a.ÇC.a.CŞB
    1234567
    891011121314
    15161718192021
    22232425262728
    293031
    Təqdimatlar
    Statistika

    Onlayn: 1
    Ziyarətçilərin sayı: 1
    Qeydiyyatdan keçənlərin sayı: 0


     2-17r
    Разложить натуральное число N на простые делители.

    Для этой задачи мы также разработали две программы.
    В программе 2.17а, начиная с  k=2 (строка 6) выполняем: если число n  делится на k, то выводим на экран это k и число n  делим на k, то есть удаляем делитель k из числа – строка 10. Если не делится на k, то увеличиваем k на 1 (строка 11) и снова выполняем предыдущие действия. Алгоритм сводится к следующему: удаляем все делители 2, если они есть, Затем все делители 3, затем проверяем 4 ( все равно на 4 делиться не будет, так как делители 2, если они были, все удалены раньше).  Затем 5, затем 6 (на 6 все равно не разделится, ведь делители и 2 и 3 ( если они были) были удалены на предыдущем этапе. Остаются только простые делители.
    Программа 2.17b отличается от предыдущей тем, что проверяем деление не на  все числа подряд, а только на «кандидаты» в простые числа, которые вычисляем по формуле 6*k +/- 1, как в предыдущей программе. Так как «кандидаты» в простые числа начинаются с числа 5, то в программе проверяются числа 2, 3, 4, а с 5 уже по формуле – строки 10 12.

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    Program A2_17a;

    Var

      n,k:integer;

      begin

        readln(n);

        k:=2;

        while (k*k<=n)  do

         begin

            while (n mod k=0) do

             begin write(k,' '); ;n:=n div k; end;

            INC(k);

         end;

        if (n>1) then write(n);

        writeln;

        readln;

      end.

    // Program A2.17a;

    #include <iostream>

     

    using namespace std;

     

    int main()

    {

        int n, k=2;

        cin>>n;

        while(k*k<=n)

        {

            while(n%k==0){cout<<k<<" "; ;n=n/k;}

           k++;

        }

        if(n>1)cout<<n;

        cout<<endl;

        return 0;

    }

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    Program A2_17b;

    Var

      n:integer; k:integer=2; p:integer=2;

      begin

       readln(n); ;

        while(k*k<=n ) do

         begin

            while (n mod k=0) do

           begin write(k,' '); ;n:=n div k; end;

           if(k<5) then INC(k)

                     else

          begin k:=k+p; p:=6-p; end;

         end;

          if (n>1) then write(n);

        writeln;

        readln;

      end.

    // Program A2.17b;

    #include <iostream>

     

    using namespace std;

     

    int main()

    {  int n,k=2,p=2;

        cin>>n;

        while(k*k<=n )

        {

     while(n%k==0){cout<<k<<" "; n=n/k;}

            if(k<5) k++;

            else {k=k+p; p=6-p;}

        }

        if(n>1)cout<<n;

         cout<<endl;

        return 0;

    }

    Copyright İsaNaida © 2024
    PYTHON 3.4
    ALPLogo
    Info-Ko
    Fəxr edirik


    Elan
    Bölmələr
    MÜSABİQƏ
    Azərbaycanda İKT
    Axtarış
    Video