f3312492301 2022-10-24 02:14 采纳率: 100%
浏览 72
已结题

谁会啊 刚学Java不太能搞懂

Java这个该怎么做啊,刚学不久被难到了
题目五:质数中的质数
要求:给定一个闭区间,输出该区间内所有质数的和n。并判断n是否为质数:如果是则输出“n是质数”;如果不是则输出“n不是质数”,并输出n的所有约数(每行输出3个数);如果n=0则输出“n既不是质数也不是合数”。
输入:闭区间左端点a
闭区间右端点b
输出(情况1): 质数和为:n
n是质数。
输出(情况2): 质数和为:n
n不是质数。
它的约数有:
m1 m2 等

输出(情况3): 质数和为:n
n既不是质数也不是合数。
注:其中n = 区间[a,b]中所有质数的和;m1,m2等为n的约数。
例1:
输入:2
10
输出:质数和为:17
17是质数。

例2:
输入:2
20
输出:质数和为:77
77不是质数。
它的约数有:
7 11
例3:
输入:8
10
输出:质数和为:0
0既不是质数也不是合数。
数据范围:a,b∈[2,100000]且a≤b

  • 写回答

1条回答 默认 最新

  • it_hao528 2022-10-24 09:33
    关注

    代码参考如下:

    
    public class Main {
        public static void main(String[] args) {
    
            Scanner sc = new Scanner(System.in);
            int l = sc.nextInt();
            int r = sc.nextInt();
            if (l < 2) {
                l = 2;
            }
            int sum = 0;
            boolean isPrime;
            for (int i = l; i <= r; i++) {
                isPrime = true;
                if (i > 2 && i % 2 == 0) {
                    isPrime = false;
                } else {
                    for (int j = 3; j <= i / 3; j += 2) {
                        if (i % j == 0) {
                            isPrime = false;
                            break;
                        }
                    }
                }
                if (isPrime) {
                    sum += i;
                }
            }
            if (sum > 0) {
                System.out.println("质数和为:" + sum);
                isPrime = true;
                if (sum > 2 && sum % 2 == 0) {
                    isPrime = false;
                } else {
                    for (int i = 3; i <= sum / 3; i += 2) {
                        if (sum % i == 0) {
                            isPrime = false;
                            break;
                        }
                    }
                }
    
                if (isPrime) {
                    System.out.println(sum + "是质数。");
                } else {
                    System.out.println(sum + "不是质数。\n它的约数有:");
                    for (int i = 2; i < sum / 2; i++) {
                        if (sum % i == 0) {
                            System.out.print(i + " ");
                            sum /= i;
                            i = 1;
                        }
                    }
                    System.out.print(sum);
                }
            } else {
                System.out.println("质数和为:0\n0既不是质数也不是合数。");
            }
    
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月1日
  • 已采纳回答 10月24日
  • 创建了问题 10月24日

悬赏问题

  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私