Ana içeriğe atla

Matlab Ebob Bulma

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

Bu blogdaki popüler yayınlar

Matlab Operatörler

Matematiksel operatörler: +  Toplama –  Çıkarma *  Çarpma /  Bölme ^  Üst alma .* Elemanter çarpım ./  Elemanter bölme .^  Elemanter üst alma a+b  Boyutları aynı olan a ve b matrisini toplar. a-b  Boyutları aynı olan a ve b matrislerinin farkını alır. a*b  Sütun sayısı m olan a matrisiyle satır sayısı m olan b matrisini çarpar. a/b  b düzenli kare bir matrisse (determinantı sıfırdan farklıysa), aynı boyutlu a matrisiyle; a*inv(b)işlemini yapar. a.*b  Boyutları aynı olan a ve b matrislerinin elemanlarını karşılıklı olarak çarpar. a./b  Boyutları aynı olan a ve b matrislerinin elemanlarını karşılıklı oranlar. sqrt  Kök alma abs  Mutlak değer rats  Kesirli gösterim Mantıksal operatörler: &  Ve |  Veya ~  Değil /  Bölme Karar operatörleri: >  Büyüktür <  Küçüktür >=  Büyük eşittir <=  Küçük eşittir ==  Eşittir ~= ...

Matlab Asal Sayı Buldurma

Klavyeden girilen bir tamsayının, asal sayı olup olmadıgını veren algoritma kodları: Asal sayı tanımı; "1 ve kendisinden başka tamsayıya, tam bölünemeyen tamsayılara; asal sayı" denir. Girilen tamsayının asal olup olmadıgının tespiti için; tanımdan hareketle 1'den tamsayıya kadar döngü açılır ve kaç kere tam bölündügü hesaplanır. Eğer 2 kere tam bölünmüşse girilen sayı asal sayıdır.  Matlab kodları: a=input( 'Tamsayı giriniz: ' );   %kullanıcıdan tam sayı girilmesi isteniyor disp( '   ' );                                 %bir miktar boşluk bırakılıyor s=0;                                         %s degişkeni sayının kaç defa tam bölündügünü tutması için                                     ...