算法笔记-第五章-质因子分解

算法笔记-第五章-质因子分解

  • 小试牛刀
    • 质因子2的个数
    • 丑数
  • 质因子分解
  • 最小最大质因子
  • 约数个数

小试牛刀

质因子2的个数

在这里插入图片描述

#include<cstdio>  
int main()  
{
	int n;  
	scanf_s("%d", &n);  
	int count = 0;  
	while (n % 2 == 0)  
	{
		count++;  
		n /= 2;  
	}
	printf("%d", count);  
	return 0;  
}

丑数

在这里插入图片描述
在这里插入图片描述

#include <cstdio>

int main() {
    int n;
    scanf("%d", &n);
    while (n % 2 == 0) {   
        n /= 2;   
    }
    while (n % 3 == 0) {   
        n /= 3;   
    }
    while (n % 5 == 0) {   
        n /= 5;   
    }
    printf(n == 1 ? "Yes" : "No");   
    return 0;   
}

质因子分解

在这里插入图片描述
在这里插入图片描述


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

const int MAXN = 1000 + 1;
bool isPrime[MAXN];//布尔函数,用于指定可以为倍数的因子
vector<int> primes;//存储指定的倍数因子

void getPrimes(int n) 
{
    memset(isPrime, true, sizeof(isPrime));//对于布尔数组isprime进行复制true
    for (int i = 2; i <= n; i++) //可以为倍数的从2开始到n(数的开方)
    {
        if (isPrime[i]) //选取可以为倍数的因子
        {
            primes.push_back(i);//放到数组当中
           
                                //并且下面对于访问过的倍数进行标记
            for (int j = i + i; j <= n; j += i) 
            {
                isPrime[j] = false;
            }
        }
    }
}

int main() {
    int n;
    scanf("%d", &n);
    getPrimes((int)sqrt(1.0 * n));//数的开方(带入到访问因子当中)



    for (int i = 0; i < primes.size() && n > 1; i++) //下面是进行因子判断和统计了
    {
        int counter = 0;//每一次都是统计每一个因子的数目

        while (n > 1 && n % primes[i] == 0) 
        {
            counter++;
            n /= primes[i];  
        }

        if (counter > 0) //统计后进行输出数据  
        {
            printf("%d %d\n", primes[i], counter);  
        }
    }

    if (n > 1)   
    {
        printf("%d 1", n);  
    }
    return 0;  
}

最小最大质因子

在这里插入图片描述

//最小最大质因子
#include <cstdio>
#include <cmath>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;

const int INF = 0x3f;//表示无穷大数
const int MAXN = 1000 + 1;
bool isPrime[MAXN];
vector<int> primes;

void getPrimes() 
{
    memset(isPrime, true, sizeof(isPrime));//将布尔函数进行赋值
    for (int i = 2; i < MAXN; i++)
    {
        if (isPrime[i])
        {
            primes.push_back(i);
            for (int j = i + i; j < MAXN; j += i) //将倍数因子进行标记
            {
                isPrime[j] = false;
            }
        }
    }
}

int main() 
{
    int n, x;
    scanf("%d", &n);
    getPrimes();//将倍数因子进行标记操作


    int minFactor = INF, maxFactor = 0;


    for (int i = 0; i < n; i++) 
    {
        scanf("%d", &x);
        for (int j = 0; j < primes.size() && x > 1; j++)   
        {
            int counter = 0;  
            while (x > 1 && x % primes[j] == 0)//求得因子  
            {
                counter++;//统计因子数目  
                x /= primes[j];  
            }


            if (counter > 0) //取得因子最小值和因子最大值  
            {
                minFactor = min(minFactor, primes[j]);  
                maxFactor = max(maxFactor, primes[j]);  
            }
        }

        //最后条件:x除以prime[j]还有数且>1时候  
        if (x > 1)   
        {
            minFactor = min(minFactor, x);  
            maxFactor = max(maxFactor, x);  
        }

    }

    printf("%d %d", minFactor, maxFactor);  
    return 0;  
}

约数个数

在这里插入图片描述

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

const int MAXN = 1000 + 1;
bool isPrime[MAXN];
vector<int> primes;


void getPrimes(int n) 
{
    memset(isPrime, true, sizeof(isPrime));
    for (int i = 2; i <= n; i++) 
    {
        if (isPrime[i]) 
        {
            primes.push_back(i);
            for (int j = i + i; j <= n; j += i)
            {
                isPrime[j] = false;
            }
        }
    }
}

int main() {
    int n;
    scanf("%d", &n);
    getPrimes((int)sqrt(1.0 * n));

    int result = 1;
    for (int i = 0; i < primes.size() && n > 1; i++) 
    {
        int counter = 0;
        while (n > 1 && n % primes[i] == 0) 
        {
            counter++;
            n /= primes[i];
        }
        if (counter > 0) 
        {
            result = result * (counter + 1);
        }
    }
    if (n > 1) 
    {
        result = result * 2;
    }
    printf("%d", result);
    return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Mysql系列】Mysql基础篇

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

部署 KVM 虚拟化平台

虚拟化技术的演变过程分为软件模拟、虚拟化层翻译、容器虚拟化三个阶段 1 软件模拟的技术方式 软件模拟是通过软件完全模拟CPU、网卡、芯片组、磁盘等计算机硬件&#xff0c;因为是软件模拟&#xff0c;所以理论上可以模拟任何硬件&#xff0c;甚至不存在的硬件。但是由于是软…

Changes to Captions: An Attentive Network forRemote Sensing Change Captioning

字幕的变化&#xff1a;一个用于遥感变化字幕的关注网络 IEEE Transactions on Image Processing Shizhen Chang, Pedram Ghamisi 2023 摘要&#xff1a;近年来&#xff0c;高级研究集中在使用自然语言处理&#xff08;NLP&#xff09;技术对遥感图像进行直接学习和分析。准…

如何应对招聘中的职业性格测评?

很多同学听说要做性格测试&#xff0c;第一反应是如何让自己的性格让HR看起来更好....没办法为了顺利入职&#xff0c;咱不能老实作答&#xff0c;因为性格测评搞不好是真刷人的&#xff0c;刷人的&#xff08;无视你的专业能力和笔试成绩&#xff09;..... 可是....很多性格测…

C++标准模板(STL)- 类型支持 (受支持操作,检查类型是否拥有未被弃置的析构函数)

类型特性 类型特性定义一个编译时基于模板的结构&#xff0c;以查询或修改类型的属性。 试图特化定义于 <type_traits> 头文件的模板导致未定义行为&#xff0c;除了 std::common_type 可依照其所描述特化。 定义于<type_traits>头文件的模板可以用不完整类型实例…

ARPG----C++学习记录04 Section8 角色类,移动

角色类输入 新建一个角色C&#xff0c;继承建立蓝图,和Pawn一样&#xff0c;绑定输入移动和相机. 在构造函数中添加这段代码也能实现。打开UsePawnControlRotation就可以让人物不跟随鼠标旋转 得到旋转后的向前向量 使用旋转矩阵 想要前进方向和旋转的方向对应。获取当前控制…

Linux可以投屏到电视吗?用网页浏览器就能投屏到电视!

Linux系统的电脑如果要投屏到安卓电视屏幕上&#xff0c;可以使用投屏工具AirDroid Cast的网页版和TV版一起实现。 首先&#xff0c;在Linux系统的电脑里用chrome浏览器或edge浏览器打开webcast.airdroid.com。这就是AirDroid Cast的网页版。你可以看到中间白色框框的右上角有个…

简单地聊一聊Spring Boot的构架

本文由葡萄城技术团队发布。转载请注明出处&#xff1a;葡萄城官网&#xff0c;葡萄城为开发者提供专业的开发工具、解决方案和服务&#xff0c;赋能开发者。 前言 本文小编将详细解析Spring Boot框架&#xff0c;并通过代码举例说明每个层的作用。我们将深入探讨Spring Boot的…

GraphQL 与 REST 双重赋能:Hasura 帮你给数据库添加接口 | 开源日报 No.75

hasura/graphql-engine Stars: 30.3k License: Apache-2.0 Hasura GraphQL Engine 是一个开源产品&#xff0c;通过为您的数据提供 GraphQL 或 REST API 以及内置授权来加速 API 开发。它具有以下主要功能和核心优势&#xff1a; 内建强大查询&#xff1a;支持过滤、分页、模…

Cnyunwei

运维管理系统&#xff1a;监控系统 Cnyunwei Centos 6 封装 Cacti、Nagios、Centreon&#xff08;中英文自己切换&#xff09;、Check_MK、Nconf英文版本全部采用与国外官方同步的最新版本&#xff0c;会发布32位和64位两个版本。 安装很简单&#xff0c;直接回车即可全自动安…

如何在TS中使用JS库

在 TypeScript 中使用 JavaScript 库&#xff0c;几种常用的方法。 直接使用&#xff1a;如果 JavaScript 库不提供 TypeScript 类型定义文件&#xff08;.d.ts&#xff09;&#xff0c;您可以直接在 TypeScript 代码中使用该库。您可以通过在 TypeScript 代码的开头添加 //ts-…

模拟接口数据之使用Fetch方法实现

文章目录 前言一、package.json配置mock执行脚本二、封装接口&#xff0c;区分走ajax还是fetch三、创建mock目录&#xff0c;及相关接口文件四、定义接口五、使用mock数据使用模拟数据优化fetch返回数据 六、不使用模拟数据七、对比其他需要使用依赖相关配置如有启发&#xff0…

HTML字符实体

从注释汲取知识&#xff0c;由代码熟悉用法&#xff0c;所以直接看代码吧&#xff01;&#x1f447;&#x1f447;&#x1f447; <body><!-- 空格 --><!-- 三个空格&#xff0c;实际只显示一个 --><div>我 嘎嘎嘎</div><!-- 用字符实体代替…

C++引用 引用做函数参数

一.引用的定义和语法 // 给a取别名为b int &b a; // 修改b的值&#xff0c;a的值也会被修改&#xff0c;因为他们都指向同一个内存空间 b 20; 二.引用的注意事项 1.引用必须初始化如 int&b; 是错误的&#xff0c;因为没有初始化。 2.引用在初始化后&#xff0c;不…

聚观早报 |滴滴发布Q3财报;小鹏G9连续销量排行第一

【聚观365】11月14日消息 滴滴发布Q3财报 小鹏G9连续销量排行第一 XREAL双11实现7倍增长 真我GT5 Pro真机图 2024年智能手机AI功能竞争激烈 滴滴发布Q3财报 滴滴在其官网发布2023年三季度业绩报告。报告显示&#xff0c;三季度滴滴实现总收入514亿元&#xff0c;同比增长…

Command Injection

Command Injection "Command Injection"(命令注入)&#xff0c;其目标是通过一个应用程序在主机操作系统上执行任意命令。当一个应用程序将用户提供的数据&#xff08;如表单、cookies、HTTP头等&#xff09;传递给系统shell时&#xff0c;就可能发生命令注入攻击。在…

分享几个艺术生活小站点

今天分享几个艺术生活小站点&#xff01; 小叽News游戏资源分享 网址&#xff1a;https://steamzg.com/ 欢迎来到这个充满活力的游戏站点&#xff0c;这里汇集了各种类型的游戏&#xff0c;让你一次性尽享各种游戏的乐趣。这里是游戏爱好者的天堂&#xff0c;每款游戏都配有详…

2.3 Windows驱动开发:内核字符串转换方法

在内核编程中字符串有两种格式ANSI_STRING与UNICODE_STRING&#xff0c;这两种格式是微软推出的安全版本的字符串结构体&#xff0c;也是微软推荐使用的格式&#xff0c;通常情况下ANSI_STRING代表的类型是char *也就是ANSI多字节模式的字符串&#xff0c;而UNICODE_STRING则代…

C语言之初阶指针

一、指针&#xff1a; 其实按照我的理解&#xff0c;当我们写c语言程序的时候&#xff0c;创建的变量&#xff0c;数组等都要在内存上开辟空间。而每一个内存都有一个唯一的编号&#xff0c;这个编号也被称为地址编号&#xff0c;就相当于&#xff0c;编号地址指针。 二、指针…

2023金三银四常见Loadrunner面试题总结,附带答案

以下的loadrunner的面试题都是在面试过程中总结出来比较常见的面试题&#xff0c;现在分享给大家&#xff0c;希望可以帮助你们&#xff01; Q1、LoadRunner的工作原理是什么? Q2、LoadRunner分哪三部分? Q3、LoadRunner进行测试的流程? Q4、什么是并发?在lordrunner中&…
最新文章