Merhaba,
Kullanıcıdan alınan sayıyı asal sayılara parçalamam gerekiyor.
Kullanıcı 5 girerse 3+2= 5 mantığından 2 3 şeklinde
Kullanıcı 9 girerse 2+2+2+3 mantığından 2 2 2 3 şeklinde
ekran çıktısı vermesi lazım.
Neye göre deneyerek gitmek gerek ?
asal sayı sorusu ? (Algoritma)
8
●946
- 02-01-2016, 21:58:30Hocam matematikte nasıl yapıyorsak öyle yapacaksınız diyeceğim ama yapmak istediğiniz şey tam olarak asal çarpanlarına ayırma değil sanırım.
Onun dışında ;
9'u 2+ 2+ 5 şeklinde istemiyorsunuz mesela.
Tüm sayıları : çiftse; 2+2+2+2+... şeklinde, tekse 2+2+....+3 şeklinde yazarız sizin yazdığınıza göre.
Tam anlayamadım yani. - 02-01-2016, 23:56:10minden maxa giden bir asal sayı bölenler lazım hocamIpod adlı üyeden alıntı: mesajı görüntüle
çiftte 2 tekte 3 olmamasının sebebi
35 sayısında 2 3 7 23 olması yani kendisinden büyük herhangi bir asal sayı sağlıyorsa olur 9 da gözden kaçırmışım 9 u 2 2 5 10 u da 2 3 5 şeklinde dizmek istiyorum - 04-01-2016, 10:45:27çok güzel soru. çok beğendim. kullanacağın yapı rekürsif olmalı. algoritman ise en kısa yol algoritması.
bir tane asal sayı graphın olmalı. sayı ağacın en başından başlayarak, sayı-kök şeklinde tekrardan en baştan(rekürsif) başlayarak, sayı ==0 oluncaya kadar devam etmeli.
edit: yok vazgeçtim. işi uzatmadan.
gene rekürsif bir yapı kuracağız.
sayıdan asal sayı dizisinin çıkabilen en küçük elemanını çıkartıp, rekürsif yapıyı kuracağız. bunu bir stacke yazacağız. eğer sayı çıkarma işleminden sonra negatif olursa, son işlemi geri alıp başka bir elemanı çıkaracağız.
9
9-2=7 -> pop (2)
7-2 =5 -> pop (2)
5-2 =3 -> pop(2)
3-2 = 1 -> pop(2)
1-2 =-1 geri git. -> push(2)
3-3 =0 tamam. pop(3)
buradan sonra stack i ekrana yazdıracaksın. - 13-01-2016, 14:07:43static void Main(string[] args)
{
int Sayi = Convert.ToInt32(Console.ReadLine()), Sayac = 0;
for (int i = 1; i <= Sayi; i++)
{
if (Sayi % i == 0)
{
Sayac++;
}
}
if (Sayac == 2)
{
//Sayı asaldır.
//O halde direkt olarak sayının kendisini yazdırabiliriz.
Console.Write(Sayi);
}
else
{
//Demek ki sayı asal değildir.
//Asal çarpanlarına ayıralım.
string AsalCarpanlar = "";
for (int i = 1; i <= Sayi; i++)
{
if (i != 1 && Sayi % i == 0)
{
Sayi = Sayi / i;
AsalCarpanlar += i + " x ";
i = 1;
}
}
Console.Write(AsalCarpanlar);
}
Console.Read();
}
Buyursunlar... - 15-01-2016, 03:54:06gncy adlı üyeden alıntı: mesajı görüntüle
olayı yanlış anlamışsınız hocam
ilk olarak sayı asal ise direk yazmıyoruz örneğin 5 i = 2 + 3 şeklinde yazıyoruz.
ikinci olarak asal çarpan değil toplam arıyorum