26 Kasım 2010 Cuma

Asal Sayı Test Etme Programı

using System.Windows.Forms;
using System.Collections.Generic;
using System;

namespace IsPrime
{
public partial class Form1 : Form
{
List
<uint> primes;

public Form1()
{
InitializeComponent();
FindPrimes(
100000);
}

private void button1_Click(object sender, System.EventArgs e)
{
ulong number = ulong.Parse(textBox1.Text);

if (number % 2 == 0 || number % 3 == 0)
{
MessageBox.Show(
"Asal Değil");
return;
}

if (number > Math.Pow(primes[primes.Count - 1], 2))
{
MessageBox.Show(
"Bu sayının asal olup olmadığını bilmiyorum!"
+ "\r\n9998200081 den küçükleri bilebilirim.");
return;
}

if (number < 100000)
{
if (primes.Contains(uint.Parse(textBox1.Text)))
{
MessageBox.Show(
"Asal");
return;
}
else
{
MessageBox.Show(
"Asal Değil");
return;
}
}
else //number > 100000
{
for (int j = 0; j < primes.Count && primes[j] <= Math.Sqrt(number); ++j)
{
if (number % primes[j] == 0)
{
MessageBox.Show(
"Asal Değil!");
return;
}
}
MessageBox.Show(
"Asal");
return;
}
}

private void FindPrimes(int limit)
{
primes
= new List<uint>();

primes.Add(
2);

bool isPrime = true;

for (int i = 3; i <= limit; i = i + 2)
{
for (int j = 0; j < primes.Count && primes[j] <= Math.Sqrt(i); ++j)
{
if (i % primes[j] == 0)
{
isPrime
= false;
break;
}
}

if (isPrime)
{
primes.Add(Convert.ToUInt32(i));
}

isPrime
= true;
}
}
}
}