3 Kasım 2013 Pazar

C'de girilen sayının asal olup olmadığını bulma

10 comments
Bu yazıda klavyeden girilen bir sayının asal olup olmadığını bulan programın nasıl yazılabileceğini anlatacağım. Kendisi ve 1'den başka tam böleni olmayan sayılara asal sayı deniyor. Programı yazarken de for döngüsü oluşturacağım ve programın tam bölenlerini bulacağım.

Tam bölen demek, bölenden kalan 0 demek. Bu durumda % işaretiyle kalanın 0 olup olmadığını kontrol etmek gerekiyor.

Öncelikle i, sayi ve 0'a eşit olan sayac adında integer değişkenler oluşturuyorum.

int i,sayi,sayac=0;

Ardından kullanıcının sayı girmesini istiyorum. scanf komutuyla sayıyı kullanıcıdan alıyorum.

printf("Sayiyi girin : ");
scanf("%d",&sayi);

Daha sonra bir for döngüsü oluşturuyorum ve 2'den başlatarak <sayi olana kadar devam ediyorum.

Döngümün içine bir if şartı koyuyorum ve eğer kalan 0 ise sayac değişkenini 1 arttırıyorum.

for(i=2;i<sayi;i++)
    {
       if(sayi%i==0)
       {
           sayac++;
       }    
    }  

Son olarak sayac değişkenini kontrol ediyorum. Eğer sayaç 0'a eşit ise kalansız böleni yok demektir. Yani sayı asaldır. Aksi taktirde ise sayı asal değildir.

if(sayac==0)
    {
        printf("Asal");                    
    }
    else
    {
        printf("Asal degil"); 
    }

Programı çalıştırdığımda ve bir sayı girdiğimde aşağıdaki gibi bir ekranla karşılaşıyorum.




Kodun tamamı :


#include<stdio.h>
#include<conio.h>

main()
{
    int i,sayi,sayac=0;
    printf("Sayiyi girin : ");
    scanf("%d",&sayi);
    
    for(i=2;i<sayi;i++)
    {
       if(sayi%i==0)
       {
           sayac++;
       }    
    }     
    
    if(sayac==0)
    {
        printf("Asal");                    
    }
    else
    {
        printf("Asal degil"); 
    }
    
    getch();
}



If You Enjoyed This, Take 5 Seconds To Share It

10 yorum:

Unknown dedi ki...

çok işime yaradı sağolun cok tesekkürler!

Unknown dedi ki...

Bro kodlarda hata var sadece 10 A kadar çalışıyor 10 dan büyük sayılarda çalışmıyor

Unknown dedi ki...

Bro kodlarda hata var sadece 10 A kadar çalışıyor 10 dan büyük sayılarda çalışmıyor

Unknown dedi ki...
Bu yorum yazar tarafından silindi.
Unknown dedi ki...

ben yeni başladım c'ye. kaynak kodum şu şekilde.

#include
#include
#include
int main(){
double bolunen,bolen=2,kalan;
printf("\nTest edilecek birden buyuk sayiyi giriniz:");
scanf("%lf",&bolunen);
if(bolunen==2)
printf("%.0lf sayisi asaldir.\n",bolunen);
else
kalan=fmod(bolunen,bolen);
while(kalan!=0&&bolen!=bolunen)
{
bolen++;
kalan=fmod(bolunen,bolen);
if(bolen==bolunen)
printf("%.0lf sayisi asaldir.\n",bolunen);
}
if(bolen==bolunen);
else
printf("%.0lf sayisi asal degildir.\n",bolunen);

system("pause");
return 0;
}

Adsız dedi ki...

paylaşım için teşekkürler

dgs telegram dedi ki...
Bu yorum yazar tarafından silindi.
esraaaa dedi ki...

girilen asal sayıdan sonraki 5 asal sayıyı ekrana yazan program

esraaaa dedi ki...

nasıl olcak

Adsız dedi ki...

tc numaramızın önceki 10 adet asal sayıyı ve sonraki 10 adet asal sayıyı bulan programın kodları lazım. Yardımlarınızı bekliyorum.