You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java实现指定区间内各数字的约数求解算法需求

Java实现区间内数字的真约数求解算法

核心思路

  1. 遍历用户指定区间内的每个数字,从start到end逐个处理;
  2. 对每个数字,从num/2开始向下遍历到2,筛选出能整除该数字的数(排除1和数字本身的真约数);
  3. 按从大到小的顺序收集约数,最后根据是否有收集到约数输出对应内容。

完整代码实现

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class SubmultiplesFinder {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // 获取用户输入的起始与结束值
        System.out.print("start: ");
        int start = scanner.nextInt();
        System.out.print("end: ");
        int end = scanner.nextInt();
        System.out.println();
        
        // 遍历区间内的每个数字
        for (int num = start; num <= end; num++) {
            List<Integer> submultiples = new ArrayList<>();
            
            // 从num的一半开始向下查找,保证约数从大到小收集
            for (int i = num / 2; i >= 2; i--) {
                if (num % i == 0) {
                    submultiples.add(i);
                }
            }
            
            // 按要求格式输出结果
            System.out.print("Submultiples of " + num + ":  ");
            if (submultiples.isEmpty()) {
                System.out.println("Doesn't have submultiples");
            } else {
                submultiples.forEach(sub -> System.out.print(sub + " "));
                System.out.println();
            }
        }
        
        scanner.close();
    }
}

关键逻辑说明

  • 高效筛选约数:从num/2开始向下遍历,因为一个数的最大真约数不会超过自身的一半(质数除外,而质数除了1没有其他真约数),能减少无效遍历;
  • 输出格式匹配:完全对齐示例的输出样式,空约数时显示指定文本,多约数时按从大到小顺序输出;
  • 自定义区间支持:通过Scanner获取用户输入的起始和结束值,满足自定义区间的需求。

内容的提问来源于stack exchange,提问作者Diret

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 11:48:34