//编程找到给定范围的素数。
我写了以下代码。到目前为止,我得到的输出是不合适的。
#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;
}
}
答案 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;
}
如果您对此有任何疑问,请与我们联系。