Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 存在多少素数?_Java_Primes - Fatal编程技术网

Java 存在多少素数?

Java 存在多少素数?,java,primes,Java,Primes,我的代码有点问题,我弄不明白,你能帮我找出我的错误吗?谢谢大家! /// Calculate Prime private static int countPrimes(int number){ int count =0; for(int i=1; i<=MAX_PRIME; i++) { if(isPrime(i)){ count++; } } System.out.println("Exactly "+ c

我的代码有点问题,我弄不明白,你能帮我找出我的错误吗?谢谢大家!

/// Calculate Prime
private static int countPrimes(int number){
    int count =0;
    for(int i=1; i<=MAX_PRIME; i++) {
        if(isPrime(i)){
        count++;
        }
    }
    System.out.println("Exactly "+  count + " prime numbers exist between "+number + " and 1000."); 
return number;
}
///计算素数
私有静态整数计数素数(整数){
整数计数=0;
对于(int i=1;i什么函数isPrice()?它是一个检查整数是否为素数的函数吗?我认为如果你有它,你只需要这样做:

 for(int i=1; i<=MAX_PRIME; i++) {
     if(isPrime(i)){
        count++
     }
 }
 return count;
System.out.println("Exactly "+  countPrimes(number) + " prime numbers exist between "+ "1" + " and " + number + ".");
System.out.println("These numbers are: ");
for(int i =0; i<listOfPrimes.size();i++){
    System.out.println(listOfPrimes.get(i));
}
for (int i = number; i<=MAX_PRIME;i++)
for(int i=1;i什么函数isPrice()?它是一个检查整数是否为素数的函数吗?我认为如果你有它,你只需要这样做:

 for(int i=1; i<=MAX_PRIME; i++) {
     if(isPrime(i)){
        count++
     }
 }
 return count;
System.out.println("Exactly "+  countPrimes(number) + " prime numbers exist between "+ "1" + " and " + number + ".");
System.out.println("These numbers are: ");
for(int i =0; i<listOfPrimes.size();i++){
    System.out.println(listOfPrimes.get(i));
}
for (int i = number; i<=MAX_PRIME;i++)

for(int i=1;i您的隐式参数int number似乎从未在程序中使用过。
请尝试以下代码:

private static int countPrimes(int number){
    int count =0;
    int countPrimes=0;
    if(number<2)
       return 0;
    for(int i=2; i<=number; i++) { //start i=2, because you know that 1 is not a prime number.
       for(int j=1; j<=i; j++){
            if(i%j==0)
                count++;                
        }
        if(count ==2)
            countPrimes++;            
        count=0;
    }
    return number;
}
在这个例子中,你可以改变你想数到的数字。在这个例子中,它最多数到10000个素数

int numOfPrimes = countPrimes(100);
这将最多计算100个素数。如果要跟踪素数,可以在程序中添加:

ArrayList<Integer> listOfPrimes = new ArrayList<Integer>();
private static int countPrimes(int number){
    int count =0;
    int countPrimes=0;
    if(number<2)
       return 0;
    for(int i=2; i<=number; i++) { //start i=2, because you know that 1 is not a prime number.
       for(int j=1; j<=i; j++){
            if(i%j==0)
                count++;                
        }
        if(count ==2){
            countPrimes++;
            listOfPrimes.add(i);
        }           
        count=0;
    }
    return number;
}
ArrayList listOfPrimes=new ArrayList();
私有静态整数计数素数(整数){
整数计数=0;
int countPrimes=0;

if(number您的隐式参数int number似乎从未在程序中使用过。 请尝试以下代码:

private static int countPrimes(int number){
    int count =0;
    int countPrimes=0;
    if(number<2)
       return 0;
    for(int i=2; i<=number; i++) { //start i=2, because you know that 1 is not a prime number.
       for(int j=1; j<=i; j++){
            if(i%j==0)
                count++;                
        }
        if(count ==2)
            countPrimes++;            
        count=0;
    }
    return number;
}
在这个例子中,你可以改变你想数到的数字。在这个例子中,它最多数到10000个素数

int numOfPrimes = countPrimes(100);
这将最多计算100个素数。如果要跟踪素数,可以在程序中添加:

ArrayList<Integer> listOfPrimes = new ArrayList<Integer>();
private static int countPrimes(int number){
    int count =0;
    int countPrimes=0;
    if(number<2)
       return 0;
    for(int i=2; i<=number; i++) { //start i=2, because you know that 1 is not a prime number.
       for(int j=1; j<=i; j++){
            if(i%j==0)
                count++;                
        }
        if(count ==2){
            countPrimes++;
            listOfPrimes.add(i);
        }           
        count=0;
    }
    return number;
}
ArrayList listOfPrimes=new ArrayList();
私有静态整数计数素数(整数){
整数计数=0;
int countPrimes=0;

如果(number我认为您返回了一个错误的变量而不是
count
,并且如果
countPrimes
意味着计算
number
MaxPrime
之间的素数,那么您应该从
number
开始计算,如下所示:

 for(int i=1; i<=MAX_PRIME; i++) {
     if(isPrime(i)){
        count++
     }
 }
 return count;
System.out.println("Exactly "+  countPrimes(number) + " prime numbers exist between "+ "1" + " and " + number + ".");
System.out.println("These numbers are: ");
for(int i =0; i<listOfPrimes.size();i++){
    System.out.println(listOfPrimes.get(i));
}
for (int i = number; i<=MAX_PRIME;i++)

for(int i=number;i我认为您返回了一个错误的变量,而不是
count
,如果
countPrimes
意味着要计算
number
MaxPrime
之间的素数,那么您应该从
number
开始计算,如下所示:

 for(int i=1; i<=MAX_PRIME; i++) {
     if(isPrime(i)){
        count++
     }
 }
 return count;
System.out.println("Exactly "+  countPrimes(number) + " prime numbers exist between "+ "1" + " and " + number + ".");
System.out.println("These numbers are: ");
for(int i =0; i<listOfPrimes.size();i++){
    System.out.println(listOfPrimes.get(i));
}
for (int i = number; i<=MAX_PRIME;i++)

for(int i=number;i可使用“埃拉托斯烯筛”找到素数。

以下程序将计算给定限制的素数

我的上限是1000

public class CountPrime {

public static void main(String[] args) {

boolean[] isPrime     = null;
int       Tprimes     = 0;
final int UPPER_BOUND = Integer.parseInt("1000");

/*------------------------------------------------------+
| Assuming all to prime                                 |
+------------------------------------------------------*/
isPrime = new boolean[UPPER_BOUND + 1];
for (int Tindex = 2; Tindex <= UPPER_BOUND; Tindex++) {
  isPrime[Tindex] = true;
} /*end for*/

/*------------------------------------------------------+
| Mark Non-Primes given the Upper Bound                 |
+------------------------------------------------------*/
for (int Tindex = 2; Tindex*Tindex <= UPPER_BOUND; Tindex++) {
  /*------------------------------------------------------+
  | For any prime all the multiples are non-prime         |
  +------------------------------------------------------*/
  if (isPrime[Tindex]) {
    for (int Tver = Tindex; Tindex*Tver <= UPPER_BOUND; Tver++) {
      isPrime[Tindex*Tver] = false;
    } /*end for*/
  } /*end if*/
} /*end for*/

/*------------------------------------------------------+
| Now, as we are done count the total primes            |
+------------------------------------------------------*/
for (int Tindex = 2; Tindex <= UPPER_BOUND; Tindex++) {
  if (isPrime[Tindex]) {
    Tprimes++;
  } /*end if*/
} /*end for*/
System.out.println("Total No. of Primes[" + Tprimes +
                   "], given the limit[" + UPPER_BOUND + "]");
} /*END OF main*/

} /*END OF CountPrime*/
公共类CountPrime{
公共静态void main(字符串[]args){
布尔[]isPrime=null;
int t时间=0;
最终整数上限=整数.parseInt(“1000”);
/*------------------------------------------------------+
|假设全部为素数|
+------------------------------------------------------*/
isPrime=新布尔值[上界+1];

对于(int-Tindex=2;Tindex而言,可使用“埃拉托斯烯筛”找到素数。

以下程序将计算给定限制的素数

我的上限是1000

public class CountPrime {

public static void main(String[] args) {

boolean[] isPrime     = null;
int       Tprimes     = 0;
final int UPPER_BOUND = Integer.parseInt("1000");

/*------------------------------------------------------+
| Assuming all to prime                                 |
+------------------------------------------------------*/
isPrime = new boolean[UPPER_BOUND + 1];
for (int Tindex = 2; Tindex <= UPPER_BOUND; Tindex++) {
  isPrime[Tindex] = true;
} /*end for*/

/*------------------------------------------------------+
| Mark Non-Primes given the Upper Bound                 |
+------------------------------------------------------*/
for (int Tindex = 2; Tindex*Tindex <= UPPER_BOUND; Tindex++) {
  /*------------------------------------------------------+
  | For any prime all the multiples are non-prime         |
  +------------------------------------------------------*/
  if (isPrime[Tindex]) {
    for (int Tver = Tindex; Tindex*Tver <= UPPER_BOUND; Tver++) {
      isPrime[Tindex*Tver] = false;
    } /*end for*/
  } /*end if*/
} /*end for*/

/*------------------------------------------------------+
| Now, as we are done count the total primes            |
+------------------------------------------------------*/
for (int Tindex = 2; Tindex <= UPPER_BOUND; Tindex++) {
  if (isPrime[Tindex]) {
    Tprimes++;
  } /*end if*/
} /*end for*/
System.out.println("Total No. of Primes[" + Tprimes +
                   "], given the limit[" + UPPER_BOUND + "]");
} /*END OF main*/

} /*END OF CountPrime*/
公共类CountPrime{
公共静态void main(字符串[]args){
布尔[]isPrime=null;
int t时间=0;
最终整数上限=整数.parseInt(“1000”);
/*------------------------------------------------------+
|假设全部为素数|
+------------------------------------------------------*/
isPrime=新布尔值[上界+1];

对于(int Tindex=2;Tindex我已重新格式化了您的代码。正确的缩进非常有用。此函数的用途是什么?输入参数编号似乎仅用于打印?iPrime未定义,您是如何做到这一点的?同样,从2开始j,如果不是I%j,则中断,没有理由运行所有I。此外,您每次都需要进行零计数通过。~BenI已重新格式化了您的代码。正确的缩进非常有用。此函数的用途是什么?输入参数编号似乎仅用于打印?iPrime未定义,您是如何做到的?同时从2开始j,如果不是i%j,则没有理由运行所有i。每次通过时您还需要进行零计数。~b为什么要返回
number
?只检查sqrt以下的数字就足够了(i)由于该方法的返回类型为int,您需要返回number。为什么要返回
number
?只检查sqrt以下的数字就够了(i)由于该方法的返回类型为int,您需要返回number。