关于#java#的运行时间过长问题,如何解决?

在做java编程刷题的时候遇到的一个问题。

对于满足该式子的数字(x,y,n):

img

求满足该式子的不同x,y组合解的个数超过的某值最小数字n。

比如满足解的个数超过nums=100的时候,n=1260(此时有113个不同解),即(x,y,1260)。

实现了一下,求解的个数超过100能够很快求出,但课题要求的是求40000个不同解的时候的n,根本执行不出来。
想了一下暴力遍历应该时间复杂度太高了,考虑过用二分法之类的算法降低复杂度,但是无法实现。
想请问一下大家有什么降低执行时间的办法么。

class Kadai7_2{
    public static void main(String[] args){
        final int num_of_solution = 500;
        int n = num_of_solution / 2 - 1;
        int ans = 0;
        do{
            ans = findnums(++n);
        }
        while(ans <= num_of_solution);{
            System.out.println("不同解的个数超过" + num_of_solution + "的最小n为 " + n);
        }
    }

    public static int findnums(int n){
        int nums = 0;
        for(int x = n + 1 ; x <=2 * n; x++){
            if((x * n)% (x - n) == 0){
                nums++;
                int y = (x * n)/ (x - n);
                System.out.println("(" + x + ", " + y + ", " + n + ")");
            }
        }
        return nums;
    }
    
}



时间复杂度O,空间复杂度,看下能否空间换时间

这个需要做动态规划,找出规律就好解决了

嗯,提供三个大方向,供你参考:
方向一:减少数据量
1、分批处理:例如:如果有一个定时任务一月度执行,那么就拆分到天进行分批处理。每天定时任务,均摊到每时每刻。
2、多线程并行处理。【需要考虑并发问题以及服务器与数据库能力。】
3、排除不必要的输入参数。【已执行定时任务不再处理,只处理增量数据。同一份数据,减少重复计算。】
方向二:优化代码
1、增加缓存数据,配置性数据静态化
2、减少IO次数,批量更新数据
3、增加事务,单次执行过程中,执行sql后需立即提交更新。
4、优化循环代码,大循环放在最里面一层
5、多线程处理。【需要考虑并发问题以及服务器与数据库能力。】
方向三:优化数据库表,减少IO时间
1、数据库增加索引
2、大数据量进行分库分表