Çözüldü Asal Çarpanlar - Programlama

Konusu 'Ivır Zıvır Sorular - Sohbet (Trivial Questions - Chat)' forumundadır ve Honore tarafından 16 Şubat 2025 başlatılmıştır.

Yüklüyor...
  1. Honore

    Honore Yönetici Yönetici

    Mesajlar:
    11.382
    Beğenileri:
    652
    Cinsiyet:
    Bay
    Meslek:
    Müh. (Elk./Bilg.)
    [​IMG]
    https://i.ibb.co/dsPkqtGV/algoritma.png
    Bilgi Sarmal TYT Matematik
    https://z-library.sk/book/24746637/9b9ae7/bilgi-sarmal-tyt-matematik.html
    [Sayfa 360, Soru 9 (son problem), Yanıtlar son sayfada]

    I. Doğru çünkü sayının asal çarpanların sayısı 2 tane olduğunda (akış şemasında "Hayır" yönünde) doğrudan A sayısı yazılır.
    II. Yanlış çünkü en küçük pozitif sayının 4 asal çarpanı varsa bu sayı 2·3·5·7 = 210 > 10 olur.
    III. Doğru çünkü 660 = 2^2·3·5·11 ve a = 11, b = 2, x = a·b = 11·2 = 22
    Doğru Yanıt C (I ve III).

    Bilgisayar Programlamayla İlgilenen Öğrenciler İçin Fortran Çözümü:
    [​IMG]
    https://i72.servimg.com/u/f72/19/97/10/39/asalza10.png

    Program: (İstenen sayılarla denenebilir.)
    Kod:
    ! https://i.ibb.co/dsPkqtGV/algoritma.png
    ! Bilgi Sarmal TYT Matematik
    ! https://z-library.sk/book/24746637/9b9ae7/bilgi-sarmal-tyt-matematik.html
    ! [Sayfa 360, Soru 9 (son problem), Yanıtlar son sayfada]
    ! https://pages.mtu.edu/~shene/COURSES/cs201/NOTES/chap04/factor.html
    ! adresindeki programdan da yararlanıldı.
    Program algoritma
    IMPLICIT  NONE
    INTEGER :: Input, Divisor, Countx = 0, ierror, j,a,b,asal_sayi,sayix
    !integer :: i !Fortran 77 ve 90 için "where-end where" yapısı yerine döngü ile
    integer :: bolen(20)=0
    integer, allocatable :: bolenx(:)
    
    print*, "2 veya daha buyuk pozitif bir tam sayi yaziniz." 
    do
      read(*,'(i10)',iostat=ierror) Input
      if ((ierror == 0).and.(Input >= 2)) then
          exit
      else 
          print*, "tekrar"; cycle
      endif
    enddo
    
    asal_sayi=input
    sayix=input
    
    print*,""
    
    ! Here, we try to remove all factors of 2
    DO                           
      IF (MOD(Input,2) /= 0 .OR. Input == 1)  EXIT
          Countx = Countx + 1
          bolen(countx)=2
          WRITE(6,12)'  Bolen # ',Countx,': ',2
          Input = Input / 2          ! remove this factor from Input
    END DO
    
    Divisor = 3                      ! now we only worry about odd factors
    DO                               ! 3, 5, 7, .... will be tried
    IF (Divisor > Input) EXIT       ! if a factor is too large, exit and done
        DO                           ! try this factor repeatedly
         IF (MOD(Input,Divisor) /= 0 .OR. Input == 1)  EXIT
             Countx = Countx + 1
             bolen(countx)=Divisor
             WRITE(6,12)'  Bolen # ',Countx,': ',Divisor
             Input = Input / Divisor ! remove this factor from Input
          END DO
          Divisor = Divisor + 2      ! move to next odd number
    END DO
    
    allocate (bolenx(countx))
    
    where (bolen>0) !Fortran 95 ve sonrası
        bolenx = bolen
    end where
    
    !Yukarıdaki "where" yapısının Fortran 77 ve 90 kodu
    !do i=1,countx
    !    if (bolen(i)==0) cycle
    !    bolenx(i)=bolen(i)    
    !enddo
    
    if (countx == 1) then
         write(6,10) "Girilen sayi zaten asal: ",asal_sayi; stop
    elseif (countx /= 4) then
        write(6,10) "  Asal carpan sayisi 4 degil:", sayix
        a = MAXVAL(bolenx); b = MINVAL(bolenx); print*,""
        write(6,10) "  En buyuk bolen, a = ",a
        write(6,10) "  En kucuk bolen, b = ",b; print*,""
        write(6,10) "  x = a * b = ",a*b
        stop
    endif
    
    print*,""
    
    if (countx /= 1) then
        do j=2,divisor-2
           write(6,'(2(i3,a))')j," Boleni ",count(bolenx==j)," adet"
        enddo
    endif 
    
    a = MAXVAL(bolenx); b = MINVAL(bolenx); print*,""
    
    write(6,10) "  En buyuk bolen, a = ",a
    write(6,10) "  En kucuk bolen, b = ",b; print*,""
    write(6,10) "  x = a * b = ",a*b
    
    10 format (a, i10)
    12 format (2(a,i3))
    
    end program
     
    : Fortran

  2. Benzer Konular: Çarpanlar Programlama
    Forum Başlık Tarih
    Matematik - Geometri Çarpanlara Ayırma-Rasyonel Kesirlere Ayırma-İki Bilinmeyenli Denklem-Fonksiyonel Toplam-Programlama 11 Ocak 2026
    Ivır Zıvır Sorular - Sohbet (Trivial Questions - Chat) Tam Sayılarda Kalansız Bölünme - Asal Çarpanlar - Programlama 30 Mayıs 2022
    Ivır Zıvır Sorular - Sohbet (Trivial Questions - Chat) Üstel Sayılar - Ardışık Doğal Sayıların Toplamı - İkinci Derece Denklemde Çarpanlara Ayırma Salı 20:46
    Ivır Zıvır Sorular - Sohbet (Trivial Questions - Chat) İkinci Derece Polinomlarda Çarpanlara Ayırma - Eşitsizlik 23 Ağustos 2026
    Hareket, Hız, Yüzde, Faiz, Sayısal Yetenek Problemleri ve Genel Kavramlar Yüzde Probleminin İkinci Derece Denklemde Çarpanlara Ayırmayla Çözümü 7 Ağustos 2026

Sayfayı Paylaş