编写程序找出所有小于 1,000 的孪生素数。显示输出如下: (3,5) (5,7)

Write a program to find all twin primes less than 1,000. Display the output as follows: (3,5) (5,7)

我目前正在尝试编写一个程序来查找 所有小于 1,000 的孪生素数。然后显示输出如下(3,5)(5,7).......(etc)

到目前为止,我只有查找素数的代码,我不确定我应该做什么,不仅要找到孪生素数,还要正确打印所有这些数。非常感谢任何建议,并在此先感谢您!到目前为止,这是我的代码。

   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 + " ";
       // ..

查看 this。它要求输入,但将 p 更改为 1,将 q 更改为 100(在 main 内)。然后删除行号 30-33。它还会根据需要打印出孪生素数。

使用定义

Twin Prime numbers are a pair of numbers which are both prime and their difference is 2.

问题主要是确定 1 到 1000 之间的所有素数,然后寻找上述意义上的双胞胎。

确定如此小区间的素数的一种简单方法是埃拉托色尼筛法。它在 O(n log log n) 操作中运行并且需要 O(n) 内存。

但即使你不知道这个方法,你也可能成功地暴力破解这个问题实例 n = 1000,一个简单的除法应该在大约 O(n^ 2) 操作。

//概念是除了2和3之外每个质数都是(6n-1)或(6n+1)形式

#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;
}

这是我的蓝色孪生素数代码 java。

但是100以内怎么打印顺序正确

public class twin_prime
{
    public static void main(int n)
    {
        int i,j;
        int p=n;
        int q=n+2;
        int c=0;
        int co=0;
        int f=q;
        System.out.println(" the no you had input is "+n);
        System.out.println("the second number will be taken at a difference of 2 ");
        System.out.println("the second number is :"+q);
        for(i=1;i<=n;i++)
        {
            if(p%i==0)
            {
                c=c+1;
            }
        }
        if(c==2)
        {
            System.out.println("no. is prime");
        }
        for(j=1;j<=q;j++)
        {
            if(f%j==0)
            {
                co=co+1;
            }
        }
        if(co==2)
        {
            System.out.println("no. is twin prime");
        }
    }
}

我不知道这段代码可以解决你的问题。如果我理解你的任务,那么这段代码可以帮助你。 (对不起,我的英文不太好!)希望能帮到你。

public class twinPrime {

    public static void main(String[] args){
        int ct=0, n=0, i=1, j=1, db=0;
        int[] array= new int[25]; //  1 between 100 there are 25 pieces 

        System.out.println("Twin primes paires:");
        while(n<array.length) {
                j=1;
                ct=0;
                while(j<=i) {
                    if(i%j==0) {
                        ct++;
                    }
                    j++;                
                }
                if(ct==2) {
                    //System.out.println(i);  
                    array[n]=i; //All prime numbers between 1-100
                    n++;
                }
            i++;    
            }
        for( int a=0; a<array.length-1;a++) { //You need array.length-1 because You won't able to array[26]-array[27] because array[27] doesn't exist
            //System.out.println("Prime Numbers:"+array[a]);
            if(array[a]-array[a+1]==-2) {
                db++;
                System.out.println(array[a]+"\t|\t"+array[a+1]);
            }   
        }
        System.out.println("Number of TwinPrime: "+db);
        
    }
        
  }