Java p=3*a*a+3*a+1 p为素数,求a

Java p=3aa+3a+1 p为素数,求a
Java p=3
aa+3a+1 p为素数,求a
Java p=3aa+3*a+1 p为素数,求a

public class PrimeFinder {
    public static void main(String[] args) {
        int a = 1;
        int p = 0;
        while (true) {
            a++;
            int num = 3*a*a + 3*a + 1;
            if (isPrime(num)) {
                break;
            }
        }
        System.out.println("a = " + a);
    }

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

a = 2 p=19

img

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int p = scanner.nextInt();
        int delta = 12 * p - 3;
        int a = (int)Math.sqrt(delta / 3);
        if (delta % 3 == 0 && isPrime(p) && 3 * a * a + 3 * a + 1 == p) {
            System.out.println(a);
        } else {
            System.out.println("No solution");
        }
    }

    // 判断一个数是否为素数
    public static boolean isPrime(int n) {
        if (n <= 1) {
            return false;
        }
        for (int i = 2; i * i <= n; i++) {
            if (n % i == 0) {
                return false;
            }
        }
        return true;
    }
}
不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    你的问题是要解决如何使用Java编程语言,从给定的a值计算出相应的素数p值,其中p = 3 * a * a + 3 * a + 1是公式。这个问题可以通过以下几个步骤进行解决:

    1. 在Java中定义一个计算素数的函数,可以使用以下代码:
    public static boolean isPrime(int n) {
        if(n <= 1) {
            return false;
        }
        for(int i = 2; i * i <= n; i++) {
            if(n % i == 0) {
                return false;
            }
        }
        return true;
    }
    

    这个函数用于判断一个整数n是否为素数。

    1. 定义一个函数来计算p值,可以使用以下代码:
    public static int calculateP(int a) {
        return 3 * a * a + 3 * a + 1;
    }
    

    这个函数用于计算给定a值的p值。

    1. 编写一个函数,输入a值,输出相应的素数p值:
    public static int calculatePrimeP(int a) {
        int p = calculateP(a);
        while(!isPrime(p)) {
            p = calculateP(++a);
        }
        return p;
    }
    

    这个函数使用上述定义的两个函数来计算给定a值的素数p值。如果计算出的p值不是素数,则循环递增a值,直到计算出的p值是素数为止。

    希望以上步骤可以帮助您解决这个问题。如果您有任何疑问,请随时联系我。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^