Ana içeriğe atla

Matlab Ekok Bulma

Kullanııc tarafından girilen 2 sayının ekok'unu bulma algortiması;

clear all
clc

x=input('Bir tamsayı giriniz: ');
y=input('Bir tamsayı giriniz: ');

asal_bolen=0;  
sayac=0;  
i=2; 
durum=1;
while durum
    if mod(x,i)==0 || mod(y,i)==0
        sayac=sayac+1; 
        asal_bolen(sayac)=i;
        if mod(x,i)==0
            x=x/i;
        elseif mod(y,i)==0
            y=y/i;
        else
            x=x/i;
            y=y/i;
        end
    else
        i=i+1;
    end
    if i>x
        durum=0;
    end
end

disp('Asal bölenler: ')
disp(asal_bolen)

%ö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
bolen_kuvvet=[0;0];
for i=1:size(asal_bolen,2)
    bolen_kuvvet(1,asal_bolen(i))=asal_bolen(i);
    bolen_kuvvet(2,asal_bolen(i))=bolen_kuvvet(2,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:size(bolen_kuvvet,2)
    if bolen_kuvvet(1,i)~=0
        sayac=sayac+1;
        ekok(1,sayac)=bolen_kuvvet(1,i);
        ekok(2,sayac)=bolen_kuvvet(2,i);
    end
end

disp('sadece asal bölen ve kuvvetleri: EKOK ')
disp(ekok)

%elde ettigimiz ekok'u onluk tabanda görüntüleyelim
ekok_sayisi=1;
for i=1:size(ekok,2)
    ekok_sayisi=ekok_sayisi*ekok(1,i)^ekok(2,i);
end

disp('ekok un onluk tabanda görüntülenmesi: ')
disp(ekok_sayisi)

Yorumlar