Java 性感素描专用印花和理货

Java 性感素描专用印花和理货,java,Java,好的,我的代码很好,但是我需要它来显示匹配的对和有多少对,而不是仅仅显示素数,我知道这可能需要进入过程筛选,我要求和,我需要一个计数系统,但我不知道如何将它们成对打印出来 这就是他们应该如何打印出来的 以下是1到42之间的所有性感素数对,每条线一对: 5 and 11 7 and 13 11 and 17 13 and 19 17 and 23 23 and 29 31 and 37 展出了7对性感的黄金组合 import java.util.Scanner; public c

好的,我的代码很好,但是我需要它来显示匹配的对和有多少对,而不是仅仅显示素数,我知道这可能需要进入过程筛选,我要求和,我需要一个计数系统,但我不知道如何将它们成对打印出来

这就是他们应该如何打印出来的

以下是1到42之间的所有性感素数对,每条线一对:

5 and 11 
7 and 13 
11 and 17 
13 and 19 
17 and 23 
23 and 29 
31 and 37 
展出了7对性感的黄金组合

import java.util.Scanner;

public class aleko_Sieve
{

Scanner in = new Scanner(System.in);
boolean primes [] = new boolean [50001];
int upperbnd;
int lowerbnd;

public aleko_Sieve ()
{

    primes[0] = false;
    primes[1] = false;

    for (int i = 2; i < primes.length; i++)
    {
        primes[i] = true;

    }

    getLower();
    getUpper();
    processSieve();
    showPrimes();
}

public void processSieve()
{

    for (int i =2; (i * i) <= upperbnd; i++)
    {

        for (int j = (i * i); j <= upperbnd; j = j + i)
        {

            primes[j] = false;
        }
    }
}

public void getLower()
{
    int x=0;
    do
    {
    System.out.println("Please enter a lower boundary ( 1 - 50000): ");
    lowerbnd = in.nextInt();
    if (( lowerbnd < 1) || (lowerbnd > 50000))
    {
        System.out.println("Please enter a valid number");
        x = 1;
    }
    if (( lowerbnd > 1) || (lowerbnd < 50000))
    {
        x = 0;
    }
    }
    while ( x == 1);
}

public void getUpper()
{
    int x=0;
    do
    {
    System.out.println("Please enter a upper boundary ( 1 - 50000): ");
    upperbnd = in.nextInt();
    if (( upperbnd < 1) || (upperbnd > 50000))
    {
        System.out.println("Please enter a valid number");
        x = 1;
    }
    if (( upperbnd > 1) || (upperbnd < 50000))
    {
        x = 0;
    }
    }
    while ( x == 1);
}

public void showPrimes()
{
    for (int i = 2; i < upperbnd; i++)
    {
        if (primes[i] == true)
        {
            System.out.println( i + " is prime");
        }
    }
}

public static void main (String args[])
{
    aleko_Sieve p = new aleko_Sieve();
}
}
import java.util.Scanner;
公共级aleko_筛
{
扫描仪输入=新扫描仪(系统输入);
布尔素数[]=新布尔值[50001];
int-upperbnd;
内特洛本德;
公共aleko_筛()
{
素数[0]=假;
素数[1]=假;
for(int i=2;i50000))
{
System.out.println(“请输入有效数字”);
x=1;
}
如果((上限bnd>1)| |(上限bnd<50000))
{
x=0;
}
}
而(x==1);
}
公众假期
{
对于(int i=2;i
当您要打印素数时,请查看比您刚才找到的当前索引低6的索引是否为素数,然后将它们都打印出来

//if found prime
if (i > 6)
{
    if (prime[i-7]==true)
    //print both primes
}

您可以按如下方式在素数数组上循环:

public void showSexy()
{
    int countPairs = 0;
    System.out.println("Here are all of the sexy prime pairs in the range 1 to 42, one pair per line:");
    for (int i = 2; i < upperbnd - 6; i++)
    {
        if (primes[i] == true && primes[i+6]== true)
        {
            countPairs++;
            System.out.println( i + " and " + (i+6));
        }
    }
    System.out.println("There were " + countPairs + " sexy prime pairs displayed");
}
public void showSexy()
{
int countPairs=0;
System.out.println(“这里是范围在1到42之间的所有性感素数对,每行一对:”);
对于(int i=2;i
有几件事需要注意:

  • 循环的上界为
    upperbnd-6
    ,因为否则您无法找到另一个大于6的素数
  • 创建一个
    countPairs
    变量,该变量在每次找到一对时递增
  • 找到时打印该对(您已经有了
    true
    /
    false
    的数组,因此很容易找到它们)
  • 完成整个列表后,打印对数

  • 数组大小是否需要根据他们是否输入1-50000而改变?哦,你刚才说42,所以我假设你要寻找的性感素数很少。您只需在素数数组中搜索当前素数-6的值。但这有点难,而且需要时间。另外,我重新阅读了代码并稍微编辑了我的答案;抱歉-尝试
    System.out.println(i+”和“+(i+6))。来晚了,还没戴眼镜。。。