C dilinde milyarlık bir sayı yazıldığında derleyici cevap vermiyor

İboArda

Centipat
Katılım
15 Mart 2022
Mesajlar
17
Daha fazla  
Cinsiyet
Erkek
Öncelikle merhabalar C dilinde asal çarpanlara ayırma ile ilgili kod yazdım. Kullanıcı bir sayı girecek ve bunun asal çarpanlarını yazacak. Bu basit bir kod fakat kullanıcı örneğin milyarlık bir sayı yazdığında derleyici cevap vermiyor sebebi nedir nasıl çözebilirim?
 
Kodu paylaşın lütfen. İnt cinsinden tanımladığınız zaman intin alabileceği maximum değerden daha büyük bir değer giriyorsunuzdur muhtemelen. Long kullanmayı deneyin
 
#include <stdio.h>

int main()
{

int sayi,i;
printf("Bir sayi degeri giriniz...\n");
scanf("%d",&sayi);
for(i=2;sayi>1;i++)
{
while(sayi%i==0)
{

printf("%d\t",i);
sayi=sayi/i;

}
}

return 0;
}
//Mesela 700876951195 sayısını girdiğinizde cvp vermiyo.
dev c++
 
Kod paylaşın, metin değil.
int 32 bittir. Sayı biti de içerdiği için tutabildiği en yüksek sayı 2^31 - 1'dir. Senin verdiğin sayı daha fazla. Bu yüzden 64 bit olan long long kullanabilirsin.
Bu arada o kod ile çok beklersin.

Kod:
#include <stdio.h>

int main() {
    long long sayi = 0;

    printf("Bir sayi degeri giriniz...\n");
    scanf("%lld", &sayi);
  
    for (long long i = 2; sayi > 1; ++i) {
        while(sayi % i == 0) {
            printf("%lld\t", i);
            sayi = sayi / i;
        }
    }

    return 0;
}
 
Derleyicinin verdiği hata: Error 193: %1 geerli bir Win32 uygulamas² değil.
Compailer yaptığımda ekranda bu yazı çıkıyor.
 
Son düzenleyen: Moderatör:
Dev C++ önermememin sebeplerini saymakla uğraşmayacağım. Dev C++ kullanmanızla ilgili benden yardım alamazsınız. Kodun çalıştığının kanıtı için buradan ufak bir sayı girip görebilirsin.

Tavsiye olarak; programlamaya yeni başlamış gibi duruyorsunuz. Ufak sayı verince çalışan şey büyük sayı verince de çok büyük ihtimal çalışacaktır. Sadece geçen vaktiniz boşa gidecek.
Bununla uğraşacağınıza diğer konulara geçin.
 

Geri
Yukarı