我正在尝试创建一个程序,用户输入一系列数字,我想列出范围之间的素数

时间:2016-05-26 03:21:17

标签: c++

//编程找到给定范围的素数。

我写了以下代码。到目前为止,我得到的输出是不合适的。

#include<iostream>

using namespace std;

int main()
{

    int n1,n2,sum=0,i,j;
    cout<<"Enter the first number"<<endl;
    cin>>n1;
    cout<<"Enter the second number"<<endl;
    cin>>n2;
    int n3=(n1+1);
    for(i=n3; i<n2;i++)
    {
        for(j=1;j<=10;j++)
        {
            if(i%j==0)
            {
                sum=sum+1;      

            }





        }
            if(sum<3)
    cout<<i<<endl;

    }


}       

2 个答案:

答案 0 :(得分:0)

您的代码存在许多会导致错误的不一致。另外,考虑是什么使数字成为素数(如果它只能被1和它本身整除)。

帮助你

1)n1和n2之间的数字n

2)检查n是否可以被2到n-1之间的任何数字整除(除非数字是2然后输出2)

3)如果n可以被2到n-1之间的其他数字整除,那么它不是素数而且不应该列出。如果不是则输出该数字

这可能是一个小的优化,你可以运行,而不必检查每个数字的因素(例如,如果数字n可被2整除,n!= 2然后抛出该数字)

ex)对于数字5,我会检查5是否可以被2,3,4整除。如果这些都不是真的那么5是素数

答案 1 :(得分:0)

您的内循环是您需要进行更改的地方。我将其分解为单独的功能,以帮助您更好地理解。您正在外部循环中的所需范围之间进行迭代。现在,您想要确定当前迭代中的数字是否为素数。让我们带一个名为public boolean onQueryTextSubmit(String query) { Toast.makeText(getApplicationContext(), "MY NIGGA WE MADE IT", Toast.LENGTH_LONG).show(); return false; } 的函数来检查数字是否为素数。

isPrime

此功能检查数字是否为素数。添加后,您的主要功能应如下所示。

bool isPrime(int x)
{
    bool flag = 1;
    for (int i=2;i<x;i++)
    {
        if (x%i == 0)
        {
            flag = 0;
            break;
        }
    }
    return flag;
}

如果您对此有任何疑问,请与我们联系。