Fermat Prime计数

时间:2018-03-13 22:46:55

标签: java

我需要帮助完成我的java程序以进行此特定练习,请注意他们只要求在用户估算的时间间隔内找到素数,其中两个正方形的某些部分等于素数:

由于某种原因,计数器的输入打印为0。

  

在1640年12月25日的一封信中;伟大的数学家Pierre de Fermat写信给Marin Mersenne,他只是证明了奇数素数p可以表示为p = a2 + b2当且仅当p可表示为p = 4c + 1时。像往常一样,费马没有提供证据,据我们所知,从未写过。直到100年后,除了欧拉之外,没有人证明这个定理。为了说明,以下每个素数可以表示为两个平方的总和:5 = 22 + 12 13 = 32 + 22 17 = 42 + 12 41 = 52 + 42,而素数11,19,23和31不能表示为两个方格的总和。编写一个Java程序FermatPrimesCount来计算可以表示为给定间隔内的平方和的素数。 (不得使用数组)。

import java.util.*;
public class FermatPrimesCount
{
    public static void main (String[]args)
    {
        int counter=0;
        Scanner Range1= new Scanner (System.in);
        Scanner Range2= new Scanner (System.in);
        System.out.println("Please input 2 positive integers to set a range 
        for the program to check in: ");
        int min= Range1.nextInt();
        int max= Range2.nextInt();

        Method(min, max, counter);

        System.out.print(counter);
    }
    public static int Method(int min, int max, int counter)
    {

        {
        if (i%2!=0)
            {
            for (int a=1; a<=9; a++)
                {
                for(int b=1; b<=9; b++)
                    {
                    int total=(a*a)+(b*b);
                    System.out.println(total);
                    if (total==i)
                    counter = counter+1;
                    }
                }
            }
        }
        return counter;
    }
}

1 个答案:

答案 0 :(得分:0)

问题是你的代码中的计数器不是全局的,所以你有2个计数器。一个属于main方法,另一个属于Method-method。要更改此项,您基本上可以执行counter = Method(min, max, counter);,因为从Method返回的值也会写入计数器。

但是,嘿。只是一点点暗示。如果我查看你的代码,我看到你不理解方法和变量真的很好。转到youtube.com并观看Java上的一些内容,以便在您使用扫描仪和这些东西之前做得更好,因为这确实是有利的。这可能也是没有人帮助过你的原因。