我目前正试图编写一个程序来查找所有小于1,000的孪生素数。然后显示输出如下(3,5)(5,7).(等)
到目前为止,我只有找到素数的代码,我不知道应该怎么做才能找到孪生素数,也不知道如何正确地打印它们。任何建议都是非常感谢的,并提前向您表示感谢!到目前为止这是我的密码。
int a =0;
int b =0;
String d = "";
for (a = 1; a <= 100; a++) {
int counter = 0;
for (b = a; b >= 1; b--) {
if (a % b == 0) {
counter = counter + 1;
}
}
if (counter == 2) {
w = w + a + " ";
// ..发布于 2015-09-27 23:11:06
看看这。它要求输入,但是将p更改为1,将q更改为100 (在main中)。然后删除行号30-33。它也会打印出你想要的孪生素数。
发布于 2015-09-27 23:31:39
使用定义
孪生素数是一对都是素数的数,它们的差是2。
问题主要是确定1到1000之间的所有素数,然后寻找上述意义上的双胞胎。
确定如此小间隔的素数的一个简单方法是Eratosthenes的筛子。它在O(n日志日志n)操作中运行,需要O(n)内存。
但是,即使你不知道这个方法,你也可能成功地强迫这个n= 1000的问题实例,一个简单的除法应该能在大约O(n^2)运算中显示1,n中的所有素数。
发布于 2015-09-29 17:33:41
//概念是每个素数都是形式( 6n-1 )或( 6n+1 )形式,但2和3除外。
#include<iostream>
using namespace std;
int fact(unsigned long long int );
int main(){
unsigned long long int n;
cout<<"Enter the number upto which you want prime numbers\n";
cin>>n;
cout<<"List of prime number is as follows"<<endl;
cout<<"(3,5)";
for(unsigned long long int i=5;i<=n;i+=6){
int d,e;
d=fact(i);
e=fact((i+2));
if(d==1 && e==1)
cout<<",("<<i<<","<<(i+2)<<")";
}
cout<<"\n";
return 0;
}
int fact(unsigned long long int x){
if(x%2==0 || x%3==0)
return 0;
for(unsigned long long int j=5;j*j<=x;j+=6)
{
if(x%j==0 || x%(j+2)==0)
return 0;
}
return 1;
}https://stackoverflow.com/questions/32813589
复制相似问题