Akademisyenler öncülüğünde matematik/fizik/bilgisayar bilimleri soru cevap platformu
2 beğenilme 0 beğenilmeme
278 kez görüntülendi
$123258168$ sayisina bakalim.

$1$ , $1$ e bolunuyor

$12$, $2$ e bolunuyor

$123$, $3$ e bolunuyor

$1232$, $4$ e bolunuyor

$12325$, $5$ e bolunuyor

$123258$, $6$ e bolunuyor

$1232581$, $7$ e bolunuyor

$12325816$, $8$ e bolunuyor

$123258168$, $9$ e bolunuyor

Bu sekilde $n$ inci basamagindan kestigimizde, $n$ e bolunen sayilara sevimli sayilar diyelim

$n$ basamakli butun sevimli sayilari bulan bir program yaziniz
Veri Bilimi kategorisinde (1.6k puan) tarafından 
tarafından yeniden etikenlendirildi | 278 kez görüntülendi

1 cevap

1 beğenilme 0 beğenilmeme

Benim C programlama dili için yazdığım kod şu şekildedir ve çalışıyor gibi gözüküyor:

#include <stdio.h>
#include <math.h>
int main()
{
    
    int basamaksayisi;
    printf("basamak sayisi giriniz:");
    scanf("%d",&basamaksayisi);
    
    int dogrulama;
    
    for(int i = pow(10,(basamaksayisi-1)); i < pow(10,basamaksayisi); i++){
        dogrulama = 1;
        
        for(int k = 0; k < basamaksayisi-1; k++){
            int bolunen = floor(i / pow(10,k));
            if (bolunen % (basamaksayisi-k) != 0){
                dogrulama = 0;
                break;
            }
            
        }
        
        if (dogrulama == 1){
                printf("Sevimli sayi bulundu: %d \n", i);
        }
    }

    return 0;
}

İlk önce kullanıcı bir basamak sayısı belirler ve algoritma, girilmiş basamak sayısına sahip tüm sayıları gözden geçirip soruda verilen özelliğe uygun olup olmadığını kontrol eder, eğer uygunsa konsolda yazdırır ve böylece bütün sevimli sayıları bulur. 

Algoritma bir çok sayı kontrol ettiği için çok verimli değil, başka verimli algoritmaların bulunabileceğini düşünüyorum ve çok yüksek basamaklar için int tanımlaması yerine daha büyük değerler alabilen "long" kullanılması gerekecektir.

(54 puan) tarafından 
Guzel ama tum sayilari aramak yerine su gozlemi kullanabilirsiniz

butun $n$ basamakli sevimli sayilar $n-1$ basamakli bir sevimli sayi ile baslar.  Bu sayede arama uzayimizi cok daha fazla daraltabiliriz
20,248 soru
21,774 cevap
73,421 yorum
2,150,283 kullanıcı