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