我怎样才能得到素数(哥德巴赫猜想在c#windows窗体中的应用)

时间:2014-09-20 10:25:08

标签: c# primes

我正在创建一个关于哥德巴赫猜想的窗体应用程序。我的问题是,我不断得到奇数而不是素数。我怎么才能得到素数?这是我到目前为止所做的事情

我发现了一些控制台应用程序中的代码,我尝试将其放入windows窗体应用程序中,但我不知道如何操作。任何帮助将不胜感激!

程序接受偶数输入,然后显示所有可能的组合

e.g。 输入:14

输出:3 + 11; 7 + 7

但我得到的是

输入:14

输出:3 + 11; 5 + 9; 7 + 7; 9 + 5;

**抱歉删除

using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Case_Study
{
    public partial class frmGBC : Form
    {
        public frmGBC()
        {
            InitializeComponent();
        }
        String holder, holder2;
        private void btnSubmit_Click(object sender, EventArgs e)
        {
            int number = int.Parse(txtInput.Text);
            if (number % 2 == 0)
            {
                lvContainer.Items.Add("Input: " + number + ":\n");
                lvContainer.Items.Add("Solutions:");
            }
            if (number < 1001)
            {
                if (number < 2)
                {
                    MessageBox.Show("Must be greater than 2!");
                    holder = "";
                }
                    if (number % 2 == 0)
                    {
                        if (number % 2 == 0 && number <= 1000 && number >= 10)
                        {
                            for (int i = 3; i < number - 3; i += 2)
                            {
                                holder =+ i + " + " + (number - i) + "; ";
                            }
                        }
                        if (number % 2 == 0 && number <= 8 && number >= 4)
                        {
                            for (int i = 3; i < number; i += 2)
                            {
                                holder =i + " + " + (number - i) + ";";
                            }
                        }
                    }
                    else
                    {
                        MessageBox.Show("Must be even number!");
                    }
                }
            else
            {
                MessageBox.Show("Maximum input is 1000!");
            }
        }
        private void frmGBC_Load(object sender, EventArgs e)
        {
            lvContainer.Columns.Add("Goldbach's Conjecture", 118);
        }

    }
}

1 个答案:

答案 0 :(得分:0)

你做了很好的工作,但在将它添加到持有者之前忘记检查for循环中的素数。我有一个函数,我只是编写代码,可能对你很方便。(不是检查素数的最佳方法)

        bool isprime(int num)
    {
        if(num<2)
        {

            return false;

        }
        else if(num==2)
        {
            return true;

        }
        else
        {
            for(int i=2; i<=num/2;i++)
            {
                if(num % i==0)
                {
                    return false;

                }
            }
            return true;
        }
    }

**我删除了他的代码部分,因为他说有人在偷他的代码。遗憾!!