蓝桥杯-质因数个数

news2025/1/18 6:45:57

蓝桥杯-质因数个数

  • 1、问题描述
  • 2、解题思路
    • 2.1 质数判断
    • 2.2 求取因子
  • 3、完整代码实现

1、问题描述

  给定正整数 n, 请问有多少个质数是 n 的约数。

输入格式

  输入的第一行包含一个整数 n

输出格式

  输出一个整数, 表示 n 的质数约数个数。

样例输入

396

样例输出

3

样例说明

  396 有 2,3,11 三个质数约数。

评测用例规模与约定

  对于 30% 的评测用例, 1≤n≤10000 。

  对于 60% 的评测用例,1≤n 1 0 9 10^9 109

  对于所有评测用例, 1≤n 1 0 16 10^{16} 1016

运行限制

  • 最大运行时间:10s
  • 最大运行内存: 512M

2、解题思路

  质数又被称为素数,是指一个大于1的自然数,除了1和它本身外,不能被其他的自然数整除。

2.1 质数判断

  判断一个数字是否是质数,就是看它的因子是否只有1和它本身。质数的判断我们简单写个函数判断就行,代码如下,遍历的时候不需要从2到n,只需要遍历到n的平方根即可。

//判断因子是否是质数
    public static boolean judge(long n){
        if(n==0||n==1){
            return false;
        }
        for (long i = 2L; i <=Math.sqrt(n); i++) {
            if(n%i==0){
                return false;
            }
        }
        return true;
    }

2.2 求取因子

  关于一个数字的因子,我们在这里找出所有能够被我们输入的数字n整除的数即可,并且可以用一个数组或者集合去收集这些因子,求因子的代码实现如下:

遍历到Math.sqrt(n)即可。

 //返回因子list
    public static List<Long> factor(long n){
        ArrayList<Long> arr = new ArrayList<>();
        for (long i = 1L; i <=Math.sqrt(n) ; i++) {
            if(n%i==0){
                arr.add(i);
                if(i!=n/i){
                    arr.add(n/i);
                }
            }
        }
        return arr;
    }

  上面两步已经完成了求取因子和判断质数的函数,我们只需要遍历因子集合,判断每个因子是否是质数即可,用一个计数器变量count来统计质因子的个数就行,最后输出这个count

3、完整代码实现

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

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        long n=scan.nextLong();
        List<Long> factor = factor(n);
        long count=0L;
        for (Long f : factor) {
            if (judge(f)) {
                count++;
            }
        }
        System.out.println(count);
        scan.close();
    }
    //返回因子list
    public static List<Long> factor(long n){
        ArrayList<Long> arr = new ArrayList<>();
        for (long i = 1L; i <=Math.sqrt(n) ; i++) {
            if(n%i==0){
                arr.add(i);
                if(i!=n/i){
                    arr.add(n/i);
                }
            }
        }
        return arr;
    }
    //判断因子是否是质数
    public static boolean judge(long n){
        if(n==0||n==1){
            return false;
        }
        for (long i = 2L; i <=Math.sqrt(n); i++) {
            if(n%i==0){
                return false;
            }
        }
        return true;
    }
}

  输入一个测试用例试一下

  2、3、11是396的三个质因数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/387154.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【教学典型案例】13.学情页面逻辑问题

目录一&#xff1a;背景介绍二&#xff1a;LocalStorage缓存①localStorage是什么&#xff1f;②如何使用localStorage缓存三&#xff1a;学情页面逻辑分析过程四&#xff1a;总结五&#xff1a;升华一&#xff1a;背景介绍 使用的前端技术是Vue2&#xff0c;前端逻辑&#xf…

SpringCloud:Eureka

目录 一、eureka的作用 二、搭建Eureka服务端 三、添加客户端 四、服务发现 提供者与消费者 服务提供者&#xff1a;一次业务中&#xff0c;被其它微服务调用的服务。&#xff08;提供接口给其它微服务) 服务消费者&#xff1a;一次业务中&#xff0c;调用其它微服务的服…

[1.1_2]计算机系统概述——操作系统的四个特征

文章目录第一章 计算机系统概述操作系统的特征&#xff08;一&#xff09;并发&#xff08;二&#xff09;共享并发和共享的关系&#xff08;三&#xff09;虚拟&#xff08;四&#xff09;异步小结第一章 计算机系统概述 操作系统的特征 操作系统的四个特征 并发共享 并发和共…

Linux学习第七节-SUID、SGID、SBIT特殊权限

1.SetUID特殊权限 setUID (SUID): 对于一个可执行的文件使用SUID权限后&#xff0c;普通用户在执行改文件后&#xff0c;临时拥有文件所有者的身份&#xff0c;该权限只在程序执行过程中有效&#xff0c;程序执行完毕后用户恢复原有身份。 SetUID权限会附加在所有者的x权限位上…

每日分享(2023最新文件快递柜系统网站源码 匿名口令分享临时文件分享)

​demo软件园每日更新资源,请看到最后就能获取你想要的: 1.UML参考手册(第二版) 中文 中文名: UML参考手册&#xff08;第二版&#xff09;原名: The Unified Modeling Language Reference Manual(2nd Edition) 作者: James Rumbaugh Ivar Jacobson Grady Booch译者: UML Ch…

汇编语言程序设计(二)之寄存器

系列文章 汇编语言程序设计&#xff08;一&#xff09; 寄存器 在学习汇编的过程中&#xff0c;我们经常需要操作寄存器&#xff0c;那么寄存器又是什么呢&#xff1f;它是用来干什么的&#xff1f; 它有什么分类&#xff1f;又该如何操作&#xff1f;… 你可能会有许多的…

基于PySide6的MySql数据库快照备份与恢复软件

db-camera 软件介绍 db-camera是一款MySql数据库备份&#xff08;快照保存&#xff09;与恢复软件。功能上与dump类似&#xff0c;但是提供了相对有好的交互界面&#xff0c;能够有效地管理导出的sql文件。 使用场景 开发阶段、测试阶段&#xff0c;尤其适合单人开发的小项目…

降低物联网开发门槛的神器大更新!TuyaOS 3.7.0版本新增matter等开发框架

作为降低物联网开发门槛的TuyaOS &#xff0c;此次迎来了重大更新&#xff08;点击查看TuyaOS 往期介绍&#xff09;&#xff01;TuyaOS 3.7.0 新版本不仅支持多款 Matter 开发框架&#xff0c;帮助开发者轻松奔赴万物互联时代&#xff0c;还覆盖多种协议连接&#xff0c;能快速…

【Simulink】单相电压型全桥逆变电路仿真基础实验

版本&#xff1a;matlab2019b 1 单相电压型全桥逆变电路简介 1.1 逆变 逆变&#xff0c;即直流变换成交流。 在全桥逆变电路中&#xff1a;V1、V2、V3、V4 为 IGBT&#xff0c;VD1、VD2、VD3、VD4为二极管 当V1、V4导通&#xff0c;V2、V3截止时&#xff0c;负载电压uo为正&a…

【CV学习笔记】之ncnnFastDet多线程c++部署

1、前言 ncnn是一款非常高效易用的深度学习推理框架&#xff0c;支持各种神经网络模型&#xff0c;如pytorch、tensorflow、onnx等&#xff0c;以及多种硬件后端&#xff0c;如x86、arm、riscv、mips、vulkan等。 ncnn项目地址:https://github.com/Tencent/ncnn FastDet是设计…

English Learning - L2 第2次小组纠音 [iː] [ɜː] [æ] 2023.3.1 周三

English Learning - L2 第2次小组纠音 [iː] [ɜː] [] 2023.3.1 周三共性问题分析前元音 [iː]中元音 [ɜː]前元音 []我的发音问题舌位找的不准纠音过程共性问题分析 前元音 [iː] 嘴角左右拉伸没有到位 解决方法&#xff1a; 嘴角是往耳后根的方向&#xff0c;微微上扬的角…

指针和数组面试题(逐题分析,完善你可能遗漏的知识)

人生不是一种享乐&#xff0c;而是一桩十分沉重的工作。 —— 列夫托尔斯泰 前言&#xff1a;之前我们就学习了数组和指针的知识。 数组&#xff1a;数组就是能够存放一组相同类型的元素&#xff0c;数组的大小取决于数组的元素个数和元素类型。 指针&#xff1a;…

Linux操作系统学习(进程等待)

文章目录进程等待进程等待的必要性如何进程等待waiwaitpid验证进程等待 ​ 我们知道fork函数可以创建一个子进程&#xff0c;而子进程通常是替父进程完成一些任务&#xff0c;而父进程在fork之后需要通过wait/waitpid等待子进程退出。这就是进程等待 进程等待的必要性 通过获…

Allegro如何导入第三方网表操作指导

Allegro如何导入第三方网表操作指导 在用Allegro做PCB设计的时候,除了支持第一方网表的导入,同样也是可以导入第三方网表的,第三方网表如下图 如何导入,具体操作如下 点击Setup点击User Preference

【抽水蓄能电站】基于粒子群优化算法的抽水蓄能电站的最佳调度方案研究(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5;&#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密…

Linux操作系统学习(进程替换)

文章目录进程替换进程替换是什么&#xff1f;替换的方法进程替换简易shell模拟进程替换 进程替换是什么&#xff1f; 如下图所示&#xff1a; ​ 进程替换就是&#xff0c;把进程B的代码和数据&#xff0c;替换正在执行的进程A的代码和数据在内存中的位置&#xff08;若代码…

etcd集群通过 Leader 写入数据,为什么K8s HA集群中讲每个 kube-apiserver 只和本机的 ETCD 通信

写在前面 对这个我不太明白&#xff0c;所有在 stackOverflow 的请教了大佬这里分享给小伙伴理解不足小伙伴帮忙指正 对每个人而言&#xff0c;真正的职责只有一个&#xff1a;找到自我。然后在心中坚守其一生&#xff0c;全心全意&#xff0c;永不停息。所有其它的路都是不完整…

spark sql(二)sql解析流程扩展

1、前言 通过前面的文章我们了解到&#xff0c;spark sql通过catalyst框架解析sql&#xff0c;而在将sql语句转变为可执行的任务过程中会将大的sql解析流程划分为未解析的逻辑计划、解析后的逻辑计划、优化后的逻辑计划、物理计划、可执行物理计划等阶段。大概的解析流程如下所…

Handler与线程

简介 Handler提供的种异步消息处理机制是&#xff1a;当它发出一个消息进入消息队列后&#xff0c;发送消息的函数立刻返回&#xff0c;接着主线程会逐个地从消息队列中把消息取出&#xff0c;然后对消息进行处理。明显&#xff0c;Handler发送消息和接收消息是异步进行的&…

三八送什么数码产品好?适合送礼的数码产品

数码产品是我们生活中比较常见到的物品&#xff0c;相比较于一般礼物的观赏性&#xff0c;它的实用性更强一些&#xff0c;所以如果你不知道送什么礼物给别人的话&#xff0c;数码产品也是不错的选择。 一、南卡小音舱蓝牙耳机 这个时代的女性&#xff0c;变得越来越自信了&am…