- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为了避免任何误解,我是新来的,而且还是 Java 的初学者。我正在尝试编写一个代码来打印第 10,001 个素数。该代码当前检查该数字是否可以被数字 2-9(含)整除,然后检查该数字的平方根是否为整数。
public static void main(String[] args){
Integer Num , Counter;
Double Sqrt; //square root
Num=8;
Counter=4 ;
while(Counter<10001){
Num++;
if ((Num%2!=0) && (Num%3!=0) && (Num%4!=0) && (Num%5!=0) && (Num%6!=0) && (Num%7!=0) && (Num%8!=0) && (Num%9!=0)){
Sqrt = Math.sqrt(Num);
if(Sqrt%1!=0){
Counter++;
}
}
}
System.out.println(Num);
}
}
编辑:
我对其进行了更改,以便它不再使用错误的定义,但是使用这个新代码没有输出,并且我没有看到循环有任何问题。我还将尝试下面的其他建议,但想知道如何解决此问题。
public static void main(String[] args)
{
int Num , Counter;
double Sqrt; //square root
Num=1;
Counter=0 ;
while(Counter<10001){
Num++;
Sqrt = Math.sqrt(Num);
int i = (int)Sqrt;
while(i>1){
if(Num%i==0){ //if the number is divisible then the loop is terminated and next number is tested
i=0;
}
i--;
}
if(i==1){
Counter++;
}
}
System.out.println(Num);
}
}
谢谢。
最佳答案
你的逻辑有问题。例如,当检查数字 143 时,您的代码认为它是素数。然而,11*13 = 143,所以它实际上不是素数。我建议创建一个素数列表并通过该列表执行 for-each 循环。
List<Integer> primes = new ArrayList<Integer>();
int number = 2;
while (primes.size() < 10001) {
boolean isPrime = true;
for (Integer prime : primes) {
if (number % prime == 0) {
isPrime = false;
break;
}
}
if (isPrime) {
primes.add(number)
}
number++;
}
System.out.println(primes.get(10000));
这可能不是一个快速的解决方案,但它应该可以工作......但没有测试。祝你好运:)。
关于java - 查找第 10001 个质数 - 代码未返回正确的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27728058/
我知道这不是寻找素数的最佳方法,也不是最有效的方法;但是,我似乎无法找到 169 算作素数的原因(就我而言,对于较小的数字,它可以正常工作)。 public static int checkPrime
有人可以指导我获取素数吗?这是家庭作业,所以我不想要答案,但一些指示将不胜感激。这真的让我很烦:( 我想我很接近。但是我遇到的问题是数字 25 和 35。它们不是质数,但是这个函数正在返回它们 var
利用正则判别素数,来源于网络,神人! 复制代码 代码如下: Set regex = New RegExp regex.Pattern = "^1?$&b
质数又称素数。一个大于1的自然数,如果除了1和它自身外,不能被其他自然数整除的数;否则称为合数。根据算术基本定理,每一个比1大的整数,要么本身是一个质数,要么可以写成一系列质数的乘积;而且如果不考虑
我在 Ruby on Rails 中尝试如何找到质数。这是我的代码: 助手:app/helpers/test_helper.rb module TestHelper
lower = int(input("from:")) upper = int(input("to:")) for num in range(lower,upper + 1): if num >
最近我对 LINQ 很感兴趣。我正在尝试获取质数。我实际上做得很好,但我的代码没有显示低于 Sqrt(n) 的素数。 static void Main(string[] args) {
在尝试设计算法时,我偶然发现了这个问题。这不是家庭作业。 令 P_i = 前 i 个素数的数组。现在我需要最小的 i 这样 Sum 1 / (P_i[n]*P_i[n]) >= 1. (如果这样的
本文已收录到 AndroidFamily ,技术和职场问题,请关注公众号 [彭旭锐] 提问。 大家好,我是小彭。 上周跟大家讲到小彭文章风格的问题,和一些朋友聊过以后,
我是新来的。我正在尝试解决此练习 Problem 18只是为了加强我的解决能力。我已经编码了答案。该任务要求“在 1,000,000 以下的质数中,有多少个数位之和等于两周中的天数?” (两周是 14
我是一名优秀的程序员,十分优秀!