gpt4 book ai didi

java - java中的重素数

转载 作者:行者123 更新时间:2023-11-30 05:52:22 25 4
gpt4 key购买 nike

  1. 重质数的定义是一对以上质数之和。回想一下,素数是一个大于 1 的数,它的唯一约数是 1 和它本身。例如,16 是重质数,因为 16=3+13 和 5+11(注意 3、5、11 和 13 都是质数)。 24 是素数,因为 24 = 5+19、7+17 和 11+13。然而,8 不是重质数,因为 8 = 3+5 但没有其他一对质数和为 8。编写一个名为 isPrimeHeavy 的函数,如果它的参数是重质数则返回 1,否则返回 0。函数签名是int isPrimeHeavy (int n)你可以假设一个名为 isPrime 的函数已经存在,如果它的参数是一个质数,它会返回 1。您可以调用此函数,但不必编写它。

我这样做了,但它不能返回一个重质数..只返回一个质数...

public class Prime {

public static boolean isPrimeHeavy(int n) {
if (n <= 1) {
return false;
}
if (n == 2) {
return true;
}
for (int i = 2; i <= Math.sqrt(n) + 1; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
public static boolean isPrimeHeavy(int n) {
if (n <= 1) {
return false;
}
if (n == 2) {
return true;
}
if (n % 2 == 0) {
return false;
}
for (int i = 3; i <= Math.sqrt(n) + 1; i = i + 2) {
if (n % i == 0) {
return false;
}
}
return true;
}
}

public class PrimeTest {

public PrimeTest() {
}

@Test
public void testIsPrime() throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {

Prime prime = new Prime();
TreeMap<Long, String> methodMap = new TreeMap<Long, String>();


for (Method method : Prime.class.getDeclaredMethods()) {

long startTime = System.currentTimeMillis();

int primeCount = 0;
for (int i = 0; i < 1000000; i++) {
if ((Boolean) method.invoke(prime, i)) {
primeCount++;
}
}

long endTime = System.currentTimeMillis();

Assert.assertEquals(method.getName() + " failed ", 78498, primeCount);
methodMap.put(endTime - startTime, method.getName());
}


for (Entry<Long, String> entry : methodMap.entrySet()) {
System.out.println(entry.getValue() + " " + entry.getKey() + " Milli seconds ");
}
}
}

最佳答案

您可以使用一个循环尝试所有可能的第一个值,然后计算第二个,当您发现不止一对时,返回 1,否则返回 0。

我给了你这么多作为提示,因为它实际上是数学而不是编程。你会在 Project Euler 中发现这样的问题。恕我直言,除非您受雇担任数学角色,否则不应期望您知道如何解决数学问题,但如果您是专业开发人员,您应该能够编写代码。

关于java - java中的重素数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11721805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com