C kodum döngüye girmiyor

Kunkka

Hectopat
Katılım
19 Ekim 2019
Mesajlar
1.422
Çözümler
4
Yer
Dire
Selamlar,
Çıktı olarak direkt 1 ile 1000 arasındaki sayıları vermekte, normal şartlarda asal sayıları vermesi gerek; neyi yanlış yaptım anlayamadım.

C:
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>

int asal(int sayi)
{
    if(sayi==1)
    {
        return 0;
    }
    for(int carpan=2;carpan<=sayi/2;carpan++)
    {
        if(sayi%carpan==0)
        {
            return 0;
        }

    }
    return 1;
}
int main()
{
    setlocale(LC_ALL,"Turkish");
    for(int i=1;i<=1000;i++)
    {
        if(asal(i)==1);
        {
            printf("%d asaldır.\n",i);
        }
    }
    return 0;
}
 
Asal fonksiyonuna girdiği anda return 1 değerini döndürüyor bu sebeple yolladığın tüm sayıları asal olarak yazıyor fonksiyonu güncelle return 1 değerini bir koşulun içerisine ata.
 
Asal fonksiyonuna girdiği anda return 1 değerini döndürüyor bu sebeple yolladığın tüm sayıları asal olarak yazıyor fonksiyonu güncelle return 1 değerini bir koşulun içerisine ata.
If koşuluna dahil ettiğimde de bir değişen olmadı, denedim.
Kod döngüye giriyor, başlık hatalı. Ama tüm sayılara asal diyor. Çünkü asal isimli fonksiyon hatalı.
Tam olarak ne hatalı?
 
Bu tarz kodları ben sayaç tanımlayarak çözüyordum C++ yazdığım dönemde. Şu an Python diline yoğunlaştım fakat bir örnek atacağım C++ dilinde.
 
[CODE lang="c" title="Asal sayı"]
#include <stdbool.h>

//SAYI asalsa true döndürür
bool asalsayimi(int sayi)
{
for(i=2;i<sayi;i++)
{
if(sayi%i==0)
{
return false;
}
}

return true;
}
[/CODE]
Biraz daha optimize ettim.
 
Son düzenleme:
Selamlar,
Çıktı olarak direkt 1 ile 1000 arasındaki sayıları vermekte, normal şartlarda asal sayıları vermesi gerek; neyi yanlış yaptım anlayamadım.

C:
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>

int asal(int sayi)
{
    if(sayi==1)
    {
        return 0;
    }
    for(int carpan=2;carpan<=sayi/2;carpan++)
    {
        if(sayi%carpan==0)
        {
            return 0;
        }

    }
    return 1;
}
int main()
{
    setlocale(LC_ALL,"Turkish");
    for(int i=1;i<=1000;i++)
    {
        if(asal(i)==1);
        {
            printf("%d asaldır.\n",i);
        }
    }
    return 0;
}
asal Fonksiyonu inceledimde pek asal sayı veren bişey değil gibi.
 
Kod:
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>

int asal(int sayi)
{
    int sayac = 0;
    if(sayi==1)
    {
        return sayac;
    }
    for(int carpan=2;carpan<=sayi/2;carpan++)
    {
        if(sayi%carpan==0)
        {
            sayac+= 1;
        }

    }
    return sayac;
}
int main()
{
    setlocale(LC_ALL,"Turkish");
    for(int i=1;i<=1000;i++)
    {
        if(asal(i)==0);
        {
            printf("%d asaldır.\n",i);
        }
    }
    return 0;
}
 

Yeni konular

Geri
Yukarı