1 ضمیمه
نقل قول: محاسبه 1000 امین عدد اول
سلام
این الگوریتم رو ببینید
ویرایش:
نقل قول:
نوشته شده توسط
Amir 2010a
این روش ها بهینه نیست و زمان زیادی رو برای اجرا میگیره
حالا اکر به جای n عدد 2000 بزاریم یعنی قرار باشه برنامه دو هزارمین عدد اول رو چاپ کنه یک ساعت یا بیشتر زمان میگیره !!!
روش بهتری وجود نداره ؟
دوست عزیز شما اصلا برنامه ای من دادم رو دیدی؟
برنامه ای که فرستادم 3000 امین عدد اول رو کمتر از 30 ثانیه می ده...
نقل قول: محاسبه 1000 امین عدد اول
نقل قول:
نوشته شده توسط
Amir 2010a
سلام
لطفا اگه میشه در مورد روش کار و الگوریتم بهینه این مسئله توضیح بدین
با تشکر
....................................
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void FindPrimeNumber()
{
int topNumber = 1000;
var numbers = new BitArray(topNumber, true);
for (int i = 2; i < topNumber; i++)
if (numbers[i])
{
for (int j = i * 2; j < topNumber; j += i)
numbers[j] = false;
}
int primes = 0;
for (int i = 1; i < topNumber; i++)
if (numbers[i])
{
primes++;
comboBox1.Items.Add(i);
}
}
private void Form1_Load(object sender, EventArgs e)
{
FindPrimeNumber();
}
}
نقل قول: محاسبه 1000 امین عدد اول
این روش ها بهینه نیست و زمان زیادی رو برای اجرا میگیره
حالا اکر به جای n عدد 2000 بزاریم یعنی قرار باشه برنامه دو هزارمین عدد اول رو چاپ کنه یک ساعت یا بیشتر زمان میگیره !!!
روش بهتری وجود نداره ؟
نقل قول: محاسبه 1000 امین عدد اول
این روش را امتحان کنید
int TedadeAdadeAvval = 2000;
List<int> aval = new List<int>();
bool flag = true;
int i = 3;
aval.Add(2);
while(aval.Count < TedadeAdadeAvval)
{
foreach (var element in aval)
{
if (element > i / element )
break;
if (i % element == 0 )
{
flag = false;
break;
}
}
if (flag)
aval.Add(i);
else
flag = true;
i++;
}
comboBox1.DataSource = aval;