using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication4
{
class Program
{
public static int toplam;
static void Main(string[] args)
{
while(!Console.KeyAvailable) // tuşa basılana kadar dönecek.
{
Random FibonacciRnd = new Random();
int FibonacciCount = FibonacciRnd.Next(1, 15);
Console.WriteLine("Rastgele elde edilecek fibonacci sayısı (1-15 arasında): " + FibonacciCount.ToString());
if (FibonacciCount == 1 || FibonacciCount == 2) //1, 1 ikisi de asal değil ve önceki 2 sayının toplamı alınması gerektiğinden bu iki sayı elle yapılıyor.
{
Console.WriteLine(FibonacciCount + ". Fibonacci Sayısı: 1.\nAsal olmadığı için toplama katılmayacak.\n-------------------------------------------");
}
else
{
int[] FibonacciArray = new int[FibonacciCount];
FibonacciArray[0] = 1; // ilk iki fibonacci terimini 1 olarak ayarlıyoruz ki 3. terim ilk ikisinin toplamı olarak başlayabilsin.
FibonacciArray[1] = 1; // ilk iki fibonacci terimini 1 olarak ayarlıyoruz ki 3. terim ilk ikisinin toplamı olarak başlayabilsin.
for (int i = 2; i < FibonacciCount; i++) //rastgele bulunan sayıya kadar dönerek istenen fibonacci sayısını bulma
{
FibonacciArray = FibonacciArray[i - 1] + FibonacciArray[i - 2];
}
int IstenenFibonacci = FibonacciArray[FibonacciArray.Length - 1];
Console.WriteLine(FibonacciCount + ". Fibonacci Sayısı: " + IstenenFibonacci);
//asal olup olmadığını anlayıp ona göre toplama katılacak veya katılmayacak.
if (!IsPrimeNumber(IstenenFibonacci)) Console.WriteLine("Asal olmadığı için toplama katılmayacak.\n-------------------------------------------");
else
{
toplam += IstenenFibonacci;
Console.WriteLine("Asal olduğu için toplama katılacak Yeni Toplam: " + toplam + ".\n-------------------------------------------");
}
}
System.Threading.Thread.Sleep(1000); // programın kaç milisaniyede bir yeni bir fibonacci sayısı elde edeceği
}
Console.WriteLine("Programın çalışmasını iptal ettiniz. Şu ana kadar elde edilen asal fibonacci sayılarının toplamı: " + toplam);
Console.ReadLine(); // enterlanana kadar çıkmaması için.
}
private static bool IsPrimeNumber(int sayi) // asal olup olmadığını analyan fonksiyon
{
int i;
for (i = 2; i <= sayi - 1; i++) // asal sayılar 2den başladığı için.
{
if (sayi % i == 0)
{
return false;
}
}
if (i == sayi)
{
return true;
}
return false;
}
}
}