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;
}
}
}
}
26 Kasım 2010 Cuma
Asal Sayı Test Etme Programı
Kaydol:
Kayıtlar (Atom)