Pages

3 Kasım 2013 Pazar

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

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();
}



10 yorum:

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

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

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

    YanıtlaSil
  4. Bu yorum yazar tarafından silindi.

    YanıtlaSil
  5. 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;
    }

    YanıtlaSil
  6. paylaşım için teşekkürler

    YanıtlaSil
  7. Bu yorum yazar tarafından silindi.

    YanıtlaSil
  8. girilen asal sayıdan sonraki 5 asal sayıyı ekrana yazan program

    YanıtlaSil
  9. 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.

    YanıtlaSil