gpt4 book ai didi

Java - 显示回文素数

转载 作者:行者123 更新时间:2023-11-29 03:17:25 25 4
gpt4 key购买 nike

对于我的 Java 类,我们必须编写一个程序,根据用户输入的数字显示所有回文素数。还有其他几个类似的问题,但我需要在不创建数组或只输入所有回文素数的情况下完成。

我的程序可以运行,并显示所有素数,但问题是它显示所有素数,而不仅仅是回文素数。我不知道错误在哪里,但如果能得到任何帮助,我将不胜感激!

谢谢,本

import java.util.Scanner;

public class PalindromePrimes {

public static void main(String[] args) {

Scanner in = new Scanner(System.in);
int startingPoint = 1;
int startingPrime = 2;
final int printPerLine = 10;

IsItPrime(startingPrime);
IsItPalin(startingPrime);

System.out.println("Please Enter a Number: ");
int n = in.nextInt();

while (startingPoint <= n)
{
if (IsItPrime(startingPrime) && IsItPalin(startingPrime)) {
System.out.print(startingPrime + " ");

if (startingPoint % printPerLine == 0)

System.out.println();

startingPoint++;
}

startingPrime++;
}
}

public static boolean IsItPrime(int sPrime) {

if (sPrime == 2) {
return true;
}

for(int i = 2; 2 * i < sPrime; i++) {
if(sPrime % i == 0){
return false;
}

}

return true;
}

public static boolean IsItPalin(int sPrime) {

int p;
int reverse = 0;

while (sPrime > 0) {
p = sPrime % 10;
reverse = reverse * 10 + p;
sPrime = sPrime / 10;
}

if (sPrime == reverse) {
return false;
}

return true;
}
}

最佳答案

你真的可以改进这两个功能:

关于 IsItPrime 的一些注意事项:

  • 首先只检查偶数(你正在这样做)
  • for 循环可以从 3 开始 并递增 2,以仅检查奇数,在前一点检查偶数。
  • for 循环只需要检查从 3 .. sqrt(N) + 1 开始的数字是否不是质数。如果数字小于或等于 sqrt(N) 且除以 N,则为质数。

函数 IsItPrime 改进:

public static boolean IsItPrime(int sPrime) {
if (sPrime % 2 == 0 && sPrime != 2) {
return false;
}

int sqrtPrime = (int)Math.sqrt(sPrime);
for (int i = 3; i <= sqrtPrime; i += 2) {
if (sPrime % i == 0) {
return false;
}
}

return true;
}

关于 IsItPalin 的一些注意事项:

  • 返回结果交换,当sPrime == reverse为回文时,必须返回true,而不是false
  • 另一个问题是,在函数中,您正在修改 while 循环中的参数 sPrime,您需要保存原始值以便在 sPrime == reverse 中进行比较>.

函数 IsItPalin 改进:

public static boolean IsItPalin(int sPrime) {
int sPrimeBackup = sPrime;
int reverse = 0;

while (sPrime > 0) {
reverse = reverse * 10 + sPrime % 10;
sPrime = sPrime / 10;
}

return (sPrimeBackup == reverse);
}

关于Java - 显示回文素数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25717138/

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