首页 > 解决方案 > 将素数添加到 X 的代码可以正常工作,但同时适用于多个测试用例,在按 Enter 之前不会执行最后一个用例

问题描述

我在 t 测试用例的代码开头给出了所有输入。它为 t-1 测试用例提供了正确的输出,但直到我按下回车键才给出最后一个测试用例的输出。因此,它没有被在线门户网站接受。

我已经在 Eclipse 中尝试了发现此问题的代码。我尝试使用 sc.next() 而不是 sc.nextInt() 但问题仍然存在。

import java.util.*;
import java.lang.*;
import java.io.*;

class GFG {
    public static void main (String[] args) {
        Scanner sc = new Scanner(System.in);
        int t = sc.nextInt();
        while(t-- > 0){
            int x = sc.nextInt();
            new GFG().findPrimesAddingToX(x);
        }
    }

    private void findPrimesAddingToX(int x){
        int p1 = 2;
        int p2 = 0;
        p2 = findPrime2(x);
        while(p1+p2 != x && p1 < p2){
            if(p1+p2 < x)
                p1 = findPrime1(p1);
            else if(p1+p2 > x)
                p2 = findPrime2(p2);
        }
        if(p1 + p2 == x)
            System.out.print("\n"+p1+" "+p2);
    }
    private int findPrime1(int p){
        boolean flag = false;
        while(!flag){
            flag = true;
            p++;
            for(int i = 2; i < Math.sqrt(p); i++){
                if(p % i == 0){
                    flag = false;
                    break;
                }
            }
            if(flag){
                return p;
            }
        }
        return 0;
    }
    private int findPrime2(int p){
        boolean flag = false;
        while(!flag){
            flag = true;
            p--;
            for(int i = 2; i < Math.sqrt(p); i++){
                if(p % i == 0){
                    flag = false;
                    break;
                }
            }
            if(flag){
                return p;
            }
        }
        return 0;
    }
}

标签: javaeclipse

解决方案


推荐阅读