Kullanıcı tarafından girilen 2 sayının ebobunu bulma;
clc clear all x=input('Bir sayı giriniz: '); y=input('Bir sayı giriniz: '); %kullanıcının x için 72 degerini girdigini varsayarak %aşagıdaki döngüde yapılan işlemleri anlatacagım % x sayısının asal bölen sayısını bulalım x_asal_bolen=0; %asal bölenlerimizi bu degişkende dizi olarak tutacağız sayac=0; %sayac ile dizinin indisini oluşturduk i=2; % Bir sayıyı 2'den başlayarak böleriz durum=1; %while döngüsünden çıkmak için koşulumuzu oluşturacak while durum if mod(x,i)==0 % x, i'ye tam bölünür mü ? sayac=sayac+1; %dizinin indisi olan sayacı 1 artır x_asal_bolen(sayac)=i; % i'yi asal bölen içine yaz x=x/i; %sayımız i'ye bölünerek küçüldü else i=i+1; % örnegin sayımız i=2 için bölünmüyorsa % i=3'e bölünüp bölğnmedigini bulmak için % i'yi 1 artırdık. end if i>x durum=0; end end % y sayısının asal bölen sayısını bulalım y_asal_bolen=0; sayac=0; i=2; durum=1; while durum if mod(y,i)==0 sayac=sayac+1; y_asal_bolen(sayac)=i; y=y/i; else i=i+1; end if i>y durum=0; end end %örnegin 72 sayısı için x_asal_bolen degişkeninin içinde %tutulan sayılar [2 2 2 3 3] %bu kuvvetleri aşagıdaki algoritma ile; %[0 2 3; % 0 3 2] haline getirecegiz. %algoritmanın görevi asal sayı 2'yi 2'inci %idise yazmak ve kuvvetinide alt satırına eklemek %x'in asal bölenlerin kuvvetlerini toplayalım x_bolen_kuvvet=[0;0]; for i=1:length(x_asal_bolen) x_bolen_kuvvet(1,x_asal_bolen(i))=x_asal_bolen(i); x_bolen_kuvvet(2,x_asal_bolen(i))=x_bolen_kuvvet(2,x_asal_bolen(i))+1; end %y'nin asal bölenlerin kuvvetlerini toplayalım y_bolen_kuvvet=[0;0]; for i=1:length(y_asal_bolen) y_bolen_kuvvet(1,y_asal_bolen(i))=y_asal_bolen(i); y_bolen_kuvvet(2,y_asal_bolen(i))=y_bolen_kuvvet(2,y_asal_bolen(i))+1; end %[0 2 3; % 0 3 2] halinde ki matrisimizi %[2 3; % 3 2] haline aşagıdaki algoritma ile getirelim %x_bolen_kuvvet degişkeninin içindeki sıfırları atıyoruz sayac=0; for i=1:length(x_bolen_kuvvet) if x_bolen_kuvvet(1,i)~=0 sayac=sayac+1; x_asal(1,sayac)=x_bolen_kuvvet(1,i); x_asal(2,sayac)=x_bolen_kuvvet(2,i); end end disp('x sayısının asal çarpanları') disp(x_asal) %y_bolen_kuvvet degişkeninin içindeki sıfırları atıyoruz sayac=0; for i=1:length(y_bolen_kuvvet) if y_bolen_kuvvet(1,i)~=0 sayac=sayac+1; y_asal(1,sayac)=y_bolen_kuvvet(1,i); y_asal(2,sayac)=y_bolen_kuvvet(2,i); end end disp('y sayınısın asal çarpanları: ') disp(y_asal) % 72 sayısı için asal çarpan ve % kuvvetleri aşagıdaki gibirdir %[2 3; % 3 2] % 90 sayısı için asal çarpan ve % kuvvetleri aşagıdaki gibirdir %[2 3 5; % 1 2 1] % Aşagıdaki algoritmada buldugumuz asal sayı % ve kuvvetler ile ebob bulundu sayac=0; ebob=[0;0]; for i=1:size(x_asal,2) for j=1:size(y_asal,2) if x_asal(1,i)==y_asal(1,j) sayac=sayac+1; ebob(1,sayac)=y_asal(1,j); if x_asal(2,i)<y_asal(2,j) ebob(2,sayac)=x_asal(2,i); elseif x_asal(2,i)>y_asal(2,j) ebob(2,sayac)=y_asal(2,j); else ebob(2,sayac)=x_asal(2,i); end end end end disp('ebob: ') disp(ebob) %elde ettigimiz ebobu onluk tabanda görüntüleyelim ebob_sayisi=1; for i=1:size(ebob,2) ebob_sayisi=ebob_sayisi*ebob(1,i)^ebob(2,i); end if ebob_sayisi~=1 disp('ebobun onluk tabanda görüntülenmesi: ') disp(ebob_sayisi) else disp('ebob yoktur') end
Yorumlar
Yorum Gönder