cagdasdag adlı üyeden alıntı: mesajı görüntüle
Peki şuanda örneğin 2 7 13 olarak alıyor asal sayıları ve topladığımızda 26 buluyor ancak bizim 26 değil sonuç olarak 17 bulmamız gerekiyor yani 2+2+2+7+1+3 yapması gerekiyor 13 üde basamaklarına ayırmamız gerekiyor bunu nasıl yapabilirim bir fikriniz varmı acaba
mesajın en basında toplam 26 sonucu vermesi gerekiyor demiştin ona göre yazdım bende.. neyse böyle 1 den fazla basamaklı sayılarda ondalıklarına ayırmak lazım, tabi sayının uzunlugunu nasıl alırsın, işte burada en samimi arkadaşımız logaritma devreye girer bir sayının log10 tabanında değerini alırsan sana uzunlugun 1 eksiğini verir ozaman

int uzunluk = (int)Math.Log10(b) + 1 sana sayının basamak uzunlugunu verir, kodu bu şekilde değiştirdim umarım işine yarar..

int a, b;
            Console.WriteLine("Tamsayıyı Girin ");
            a = int.Parse(Console.ReadLine());
            int total = 0;
            for (b = 2; a > 1; b++)
                if (a % b == 0)
                {
                    int x = 0;
                    while (a % b == 0)
                    {
                        a /= b;
                        int basamak = (int)Math.Log10(b);
                        if (basamak > 0)
                        {
                            //basamak uzunlugu 1 den fazlaysa
                            int tmp = b;
                            while (basamak > 0) {
                                total+=tmp / 10;
                                total += tmp % 10;
                                tmp /= 10;
                                basamak--;
                            }
                        }
                        else {
                            total += b; 
                        }
                        x++;
                    }
                    Console.WriteLine("{0} sayisi {1} kere çarpanıdır!", b, x);
                }
            Console.WriteLine("toplam : {0}",total);
            Console.ReadLine();