PTA 求特殊方程的正整数解

本题要求对任意给定的正整数N,求方程X2+Y2=N的全部正整数解。

输入格式:

输入在一行中给出正整数N(≤10000)。

输出格式:

输出方程X2+Y2=N的全部正整数解,其中XY。每组解占1行,两数字间以1空格分隔,按X的递增顺序输出。如果没有解,则输出No Solution

输入样例1:

884
结尾无空行

输出样例1:

10 28
20 22
结尾无空行

输入样例2:

11

输出样例2:

No Solution

代码:

 1 import java.util.Scanner;
 2 public class two{
 3   public static void main(String[] args){//本题要求对任意给定的正整数N,求方程X2+Y2=N的全部正整数解。按X的递增顺序输出
 4           Scanner scan = new Scanner(System.in);
 5           int n = scan.nextInt();//获取输入
 6           Tools tool = new Tools();
 7           if(!tool.qj(n))System.out.println("No Solution");
 8          //如果没有解就输出错误语句
 9   }
10 }
11 class Tools{
12   public boolean qj(int n){
13     boolean f = false;
14            for(int i = 1;i < Math.sqrt(n / 2)//只需要取到一半的根号就能找到所有解,不要重复解;i++){
15               if(Math.sqrt(n - i * i) % 1 == 0)
16                //如果另一个数是整数的话,就输出并且更改f值,确认已有解
17                {
18                 System.out.println(i + " " + (int)(Math.sqrt(n - i * i)));
19                 f = true;
20               }
21            }
22         return f;
23   }
24 }

 

 

上一篇:Scanner的使用(数值相加)


下一篇:Scanner基础