PDA

View Full Version : اشکال منطقی



Mega7000
چهارشنبه 03 اسفند 1384, 14:37 عصر
سلام
من این برنامه رو واسه اعداد اول که اجرا می کنم اعداد تکراری تولید میکنهوکسی می دونه مشکل از کجاست؟
برنامه رو ضمیمه کردم

Mehrafrooz
چهارشنبه 03 اسفند 1384, 16:14 عصر
من فقط برای عدد اول نوشتم خودت نگاه کن و برای عدد کامل هم می تونی درستش کنی .
2538

Mega7000
چهارشنبه 03 اسفند 1384, 17:55 عصر
ممنون اما می شه بگین اشکالم چی بود؟
می خوام خطاهامو بفهمم

Mehrafrooz
چهارشنبه 03 اسفند 1384, 18:44 عصر
این هم کد اصلاح شده . خودت دقت کنی می فهمی .

private void button1_Click(object sender, System.EventArgs e)
{
bool m = true;
int k;
if (textBox1.Text != "")
{
listBox1.Items.Clear();
if (checkBox2.Checked)
{
int n = int.Parse(textBox1.Text);
for (k = 2; k <= n; k++)
{
m = true;
for (int i = 2; i <= (k / 2) && m; i++)
{
if (k % i == 0)
{
m = !m;
//MessageBox.Show("اول نیست");
break;
}
}
if (m) listBox1.Items.Add(k.ToString());
}
}
if (checkBox1.Checked)
{
int num = int.Parse(textBox1.Text);
int sum = 0;
for (int j = 1; j < num; j++)
{
if (num % j == 0) sum += j;
}
if (sum == num) listBox1.Items.Add(num);
else MessageBox.Show("کامل نیست");

}
}
}

Mehrafrooz
چهارشنبه 03 اسفند 1384, 19:33 عصر
یکمی هک کاملتر کردم . برای اعداد کامل کوچکتر از هر عددی که بخواهی . مثلا کوچکتر از 1000 .

private void button1_Click(object sender, System.EventArgs e)
{
bool m = true;
int k;
if (textBox1.Text != "")
{
listBox1.Items.Clear();
if (checkBox2.Checked)
{
int n = int.Parse(textBox1.Text);
for (k = 2; k <= n; k++)
{
m = true;
for (int i = 2; i <= (k / 2) && m; i++)
{
if (k % i == 0)
{
m = !m;
//MessageBox.Show("اول نیست");
break;
}
}
if (m) listBox1.Items.Add(k.ToString());
}
}
if (checkBox1.Checked)
{
int num = int.Parse(textBox1.Text);
int sum = 0;
for (int i = 1; i < num; i++)
{
sum = 0;
for (int j = 1; j < i; j++)
{
if (i % j == 0) sum += j;
}
if (sum == i) listBox1.Items.Add(i);
}
}
}
}

Mega7000
چهارشنبه 03 اسفند 1384, 21:35 عصر
ممنون رفیق

Mega7000
چهارشنبه 03 اسفند 1384, 21:57 عصر
اینم که شما نوشتین باز تکراری تولید می کنه

Mehrafrooz
پنج شنبه 04 اسفند 1384, 00:09 صبح
من که متحان کردم جواب داد و تکراری نداشت . من تو 2005 نوشتم جواب داد .
2539

Mega7000
پنج شنبه 04 اسفند 1384, 23:53 عصر
دوباره ابررسی میکنم ببینم مشکل از کجاست