刷题日记——质因数的个数

news2024/12/24 22:13:40

题目

在这里插入图片描述

分析(从质数的判断角度出发)(递归)

  • 判断n是否是质数需要:
    • 遍历,i从2开始到sqrt(n),每次判断n是否能整除i,若能则不是质数,若不能则是

思路:

  • 先判断n是否为质数,是就直接返回1
  • 不是质数,返回最小整除的i,然后计算n/i的质因数个数

递归流程:

  • 大事化小:n的质因数个数=(n/i)的质因数个数+1,其中i是最小整除的质数因子
  • 小事化了:最后分解成为一个质数,直接返回1

从质数的判断角度出发递归代码

#include <cstdio>
#include <cmath>
using namespace std;

int in_num(int n){
    for(int i=2;i<=sqrt(n);i++){
        if (n%i==0) {
            return i;
        }
    }
    return -1;
}

int counts(long long n){
    int i = in_num(n);
    if(i==-1){
        return 1;
    }
    for (; (i<=n/2); ++i) {
        if (n%i==0&&in_num(i)==-1){
            break;
        }
    }
    return 1+counts(n/i);
}


int main() {
    long long n;
    while (scanf("%lld",&n)!=EOF) {
        printf("%d\n",counts(n));
    }
}
// 64 位输出请用 printf("%lld")

从质数性质出发(大大简化)

质数本身具有的性质:只能被1和自身整除

那么在计算质因子时候,其实不用考虑除数是不是质因子,因为:

  • 如果最小因子是质数,肯定要遍历到这个数才能除得尽
  • 如果最小因子不是质数,当然这种情况不存在,因为不是质数说明该因子也有自己的因子,那他就不是最小因子,因此遍历不到这个数就已经除得尽了

从质数性质出发代码

#include <stdio.h>
 
int main()
{
    int s,i,count;
    while(scanf("%d",&s)!=EOF)
    {
        count=0;
        for(i=2;i*i<=s;i++)
        {
            while(s%i==0)
        {
            count++;
            s=s/i;
        }
    }
        if(s>1)
            printf("%d\n",count+1);
        else
            printf("%d\n",count);
 
    }
    return 0;
}

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

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

相关文章

你也许不知道的 Confluence 快捷操作

Confluence 是一种企业知识管理和协作平台&#xff0c;用于创建、共享和组织团队的文档、知识和想法。它支持团队成员进行实时协作、评论和编辑文档&#xff0c;提供了强大的搜索功能&#xff0c;方便用户快速找到需要的信息。 Confluence 快捷键解析&#xff0c;标注了对应的…

SpringBoot多数据源(二)

SpringBoot多数据源AbstractRoutingDataSource&#xff08;二&#xff09; 1.多数据源配置2.多数据源调用流程3.实现 1.多数据源配置 spring-jdbc模块提供AbstractRoutingDataSource,其内部可以包含了多个DataSource&#xff0c; 然后在运行时来动态的访问数据库 2.多数据源…

新型大数据架构之湖仓一体(Lakehouse)架构特性说明——Lakehouse 架构(一)

文章目录 为什么需要新的数据架构&#xff1f;湖仓一体&#xff08;Lakehouse&#xff09;——新的大数据架构模式同时具备数仓与数据湖的优点湖仓一体架构存储层计算层 湖仓一体特性单一存储拥有数据仓库的查询性能存算分离开放式架构支持各种数据源类型支持各种使用方式架构简…

1.总结串口的发送和接收功能使用到的函数2.总结DMA的作用,和DMA+空闲中断的使用方式3.使用PWM+ADC光敏电阻完成光控灯的实验

1.总结串口的发送和接收功能使用到的函数 串口发送函数&#xff1a;HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size, uint32_t Timeout) UART_HandleTypeDef *huart&#xff1a;指定要使用的串口 const uint8_t *pData&…

数智时代的AI人才粮仓模型解读白皮书(2024版)

来源&#xff1a;极客邦 自 2023 年上半年起&#xff0c;ChatGPT 等大模型技术蓬勃发展&#xff0c;AI 技术不断突破边界&#xff0c;展现 出惊人的潜力和发展速度。从早期的逻辑推理、专家系统&#xff0c;到如今的深度学习、神经网络&#xff0c; AI 技术显著缩小了科学与实…

宝宝洗衣机买几公斤?四款精心挑选实用婴儿洗衣机推荐

家里有孩子的&#xff0c;条件允许的话&#xff0c;婴儿洗衣机还是非常有必要买的。由于宝宝的年纪还小&#xff0c;使得宝宝的皮肤比较娇嫩&#xff0c;与成人衣物分开洗护&#xff0c;可以为宝宝带来更加健康的生长环境&#xff0c;并且可以避免与大人衣物混洗所带来的细菌的…

线圈、寄存器、存储区代号、功能码 案例说明

线圈和寄存器 表示数据类型 线圈&#xff1a;表示Boolean数据类型 寄存器&#xff1a;表示非Boolean数据类型&#xff0c;用来暂时存放参与运算的数据和运算结果&#xff0c;具有接收数据、存放数据和输出数据的功能。 ModbusRTU 读输出线圈 存储区代号 0区 功能码 0x01 读输入…

【过程11】——教育被点燃的路上

这里写目录标题 一、背景二、过程1.两年四十万的认知改变2.三年打工仔的经历改变3.一年计算机的人生蜕变4.后面的展望 三、总结 一、背景 人生在世&#xff0c;对于一些事情的笃信笃行&#xff1b;背后真的会有莫大无以言表的波涛。 这个事情到现在已经五年半左右时间了&#…

数据的插入、修改和删除

一、 插入数据 1. 向表中所有字段插入数据 &#xff08;1&#xff09; 指定所有字段及其相对应的值 insert into 表名(字段1&#xff0c;字段2&#xff0c;……) values(字段值1&#xff0c;字段值2&#xff0c;……);**【案例】**向goods表中插入一条新记录 步骤1&#xff…

C语言【数组】

一、数组基本语法 1. 什么是数组 数组是c语言的一种数据结构&#xff0c;用于存储一组具有相同数据类型的数据&#xff1b; 数组中每个元素可以通过下标进行访问&#xff0c;索引从0开始&#xff0c;最大值为数组长度-1。 2. 数组的使用 类型 数组名[元素个数]; int arr[5]…

网络基础-TCP/IP和OSI协议模型

一、OSI和TCP/IP模型 二、OSI七层模型 三、TCP/IP模型 参考&#xff1a;https://www.cnblogs.com/f-ck-need-u/p/7623252.html

JS-42-Node.js01-Node.js介绍

一、浏览器大战 众所周知&#xff0c;在Netscape设计出JavaScript后的短短几个月&#xff0c;JavaScript事实上已经是前端开发的唯一标准。 后来&#xff0c;微软通过IE击败了Netscape后一统桌面&#xff0c;结果几年时间&#xff0c;浏览器毫无进步。&#xff08;2001年推出…

最优贸易题解

图论学习总结-CSDN博客https://blog.csdn.net/smile__everydays/article/details/137881868?spm1001.2014.3001.5501点击上面连接根据目录即可找到最优贸易的题解

Python文件操作大全

1 文件操作 1.1 文件打开与关闭 1.1.1 打开文件 在Python中&#xff0c;你可以使用 open() 函数来打开文件。以下是一个简单的例子&#xff1a; # 打开文件&#xff08;默认为只读模式&#xff09; file_path example.txt with open(file_path, r) as file:# 执行文件操作…

系统代理与全局代理服务器的区别

系统代理与全局代理服务器的区别 嘿&#xff0c;朋友们&#xff01;今天我来给大家讲解一下系统代理与全局代理服务器的区别。你知道吗&#xff1f;在我们使用互联网的时候&#xff0c;经常需要通过代理服务器来隐藏我们的真实网络身份。那么系统代理和全局代理服务器到底有什…

XXL-JOB v2.4.1 版本正式发布!

v2.4.1 Release Notes 1、【优化】多个项目依赖升级至较新稳定版本&#xff0c;涉及 netty、groovy、springboot、mybatis 等&#xff1b;2、【修复】“CVE-2022-43402” groovy 低版本漏洞修复。3、【修复】“CVE-2024-29025” netty 低版本漏洞修复。4、【修复】“CVE-2024-…

【C++进阶】--特殊类设计

1. 设计一个类&#xff0c;不能被拷贝 C98 将拷贝构造函数与赋值重载只声明不定义&#xff0c;并且将其访问权限设置为私有即可 class CopyBan { // ... private:CopyBan(const CopyBan&);CopyBan& operator(const CopyBan&); //... };C11 class CopyBan { // .…

c语言中声明的问题【求个关注!】

文章目录 1 变量的声明与定义&#xff08;1&#xff09;定义与声明的区别&#xff1a;&#xff08;2&#xff09;为什么要区分定义与声明&#xff1f;&#xff08;3&#xff09;extern是什么 ?&#xff08;4&#xff09;举例&#xff1a; 2 函数的声明&#xff1a;函数声明的格…

@Scheduled注解简介

一、注解介绍 Scheduled注解是Spring Boot提供的用于定时任务控制的注解&#xff0c;主要用于控制任务在某个指定时间执行&#xff0c;或者每隔一段时间执行。 二、源码 package org.springframework.scheduling.annotation;import java.lang.annotation.Documented; import…

第十五届蓝桥杯大赛软件赛省赛 C/C++ 大学 B 组(基础题)

试题 C: 好数 时间限制 : 1.0s 内存限制: 256.0MB 本题总分&#xff1a;10 分 【问题描述】 一个整数如果按从低位到高位的顺序&#xff0c;奇数位&#xff08;个位、百位、万位 &#xff09;上 的数字是奇数&#xff0c;偶数位&#xff08;十位、千位、十万位 &…