C# Console smith sayısını bulma

{{ page.title }}

Algoritma

  1. Başla
  2. sayi,x,top = 0,top1 = 0, i = 2
  3. sayi değerini gir
  4. x = sayi
  5. top = top + ( sayi % 10 ), sayi = sayi / 10
  6. Eğer sayi < 10 ise top = top + sayi, değilse 5’e git
  7. Eğer x % i = 0 ise devam et, değilse i++ 7’ye git
  8. Eğer ( i = 2 || i = 3 || i= 5 || i = 7) ise top1 = top1 + i, x = x / i,değilse devam et
  9. top1 = top1 + ( i % 10 ), i = i / 10
  10. Eğer i < 10 ise devam et, değilse 9’a git
  11. x = x / i
  12. Eğer x = 1 ise devam et, değilse 7’a git
  13. Eğer top1 = top ise yazdır “smith”,değilse yazdır “smith değil”
  14. Bitir

1 den büyük asal olmayan bir tam sayının rakamlarının toplamı, sayı, asal çarpanlarına ayrılarak yazıldığında bu yazılışta bulunan tüm asal çarpanların rakamlarının toplamına eşit oluyorsa bu tür sayılara smith sayısı denir. 1982 yılında matematikçi Albert Wilansky, kardeşi smith’i ararken onun telefon numarasının ( 4937775 ) bu ilginç özelliğini fark etmiş.Bundan dolayı da bu sayılara smith sayıları adını vermiştir.

  • 4937775 = 3 * 5 * 5 * 65837
  • 4 + 9 + 3 + 7 + 7 + 7 + 5 = 3 + 5 + 5 + 6 + 5 + 8 + 3 + 7
  • 42 = 42 ( 4937775 ) bir smith sayıdır.

Kod Yapısı

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace dmg
{
class Program
{
static void Main(string[] args)
{
int sayi,x,i =2,top = 0, top1 = 0;
Console.WriteLine("Sayıyı Giriniz = ");
sayi = Convert.ToInt32( Console.ReadLine() );
x = sayi;
while( sayi > 10)
{
top = top + sayi % 10;
sayi = sayi / 10;
}
top = top + sayi;
while( x > 1 )
{
if( x % i == 0)
{
if( i == 2 || i == 3 || i == 5 || i == 7)
{
top1 = top1 + i;
x = x / i;
}
else
{
y = i;
while(y > 10)
{
top1 = top + y % 10;
y = y / 10;
}
x = x / i;
}
}
else
{
i++;
}
}
if( top == top1)
{
Console.WriteLine("Smith sayısıdır.");
}
else
{
Console.WriteLine("Smith sayısı değildir.");
}
Console.ReadKey();
}
}
}

BOT Benson Topluluk kurucusu ve bir yazılımcı.