gpt4 book ai didi

java - 质数 III 第 18 题——我没有得到正确答案,尽管我认为我是对的

转载 作者:行者123 更新时间:2023-11-29 06:23:59 31 4
gpt4 key购买 nike

我是新来的。我正在尝试解决此练习 Problem 18只是为了加强我的解决能力。我已经编码了答案。该任务要求“在 1,000,000 以下的质数中,有多少个数位之和等于两周中的天数?” (两周是 14 天)。我的答案是 16708,但它是错误的。我希望你可以帮助我。我不知道我的错误是什么。我有 2 种方法,一种用于生成素数,另一种用于计算每个素数的位数。

这是我的代码:

import java.util.ArrayList;
import java.util.List;

public class Problema18 {

public static void main(String args[]) {
ArrayList<Integer> num = primes();
System.out.println(num);
count(primes());
}

public static ArrayList<Integer> primes() {
List<Integer> primes = new ArrayList<Integer>();
primes.add(2);

for (int i = 3; i <= 1000000; i += 2) {
boolean isPrime = true;

int stoppingPoint = (int) (Math.pow(i, 0.5) + 1);
for (int p : primes) {
if (i % p == 0) {
isPrime = false;
break;
}
if (p > stoppingPoint) { break; }
}
if (isPrime) { primes.add(i); }
}
// System.out.println(primes);
return (ArrayList<Integer>) primes;
//System.out.println(primes.size());
}

public static void count(ArrayList<Integer> num) {
int count = 0;

for (int i = 0; i <= num.size() - 1; i++) {
int number = num.get(i);
String num1 = String.valueOf(number);
int sum = 0;

for (int j = 0; j < num1.length(); j++) {
sum = Integer.parseInt(num1.charAt(j) + "") + sum;
if (sum == 14) { count++; }
}
System.out.println(sum);
}
System.out.println(count);
}
}

最佳答案

您应该在内部 for 循环之外检查 sum == 14 是否存在。现在发生的情况是,您还计算了那些数字总和大于 14 但素数某些前缀中的数字总和等于 14 的素数。

关于java - 质数 III 第 18 题——我没有得到正确答案,尽管我认为我是对的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6158135/

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