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

时间:2015-09-27 22:41:53

标签: java primes

我目前正在尝试编写一个程序来查找 所有孪生素数都不到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 + " ";
       // ..

5 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

使用定义

  

Twin Prime数字是一对数字,它们都是素数和   他们的差别是2。

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

确定如此小间隔的素数的一种简单方法是Eratosthenes筛选。它在O(n log log n)操作中运行,需要O(n)内存。

但是即使你不知道这种方法,你可能会成功地强制这个n = 1000的问题实例,一个简单的除法应该揭示[1,n]中约O(n ^ 2)的所有素数。操作

答案 2 :(得分:0)

这是我在蓝色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");
        }
    }
}

答案 3 :(得分:0)

我不知道此代码将能够解决您的问题。如果我了解您的任务,那么此代码可以为您提供帮助。 (对不起。我的英文不太好!)希望能帮到你。

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

答案 4 :(得分:-1)

//概念是每个素数都是形式(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;
}