当前位置: 首页 > news >正文

完全平方数——唯一分解定理

文章目录

  • 一、唯一分解定理是什么?
    • 1.定义
    • 2.示例
    • 3.代码模板
  • 二、例题
    • 1>问题描述(2021蓝桥杯省赛)
      • 输入格式
      • 输出格式
      • 样例输入 1
      • 样例输出 1
      • 样例输入 2
      • 样例输出 2
      • 评测用例规模与约定
    • 2>解题思路
    • 3>假娃
    • 3>C嘎嘎

一、唯一分解定理是什么?

1.定义

唯一分解定理是数论中的一个重要定理,它告诉我们:

任何大于 1 的正整数,都可以唯一分解为若干个质数的乘积(忽略排列顺序)。

数学表达式:
对于任意正整数 ( n > 1 ) ( n > 1 ) (n>1),可以表示为:
n = p 1 e 1 × p 2 e 2 × ⋯ × p k e k n = p_1^{e_1} \times p_2^{e_2} \times \cdots \times p_k^{e_k} n=p1e1×p2e2××pkek
其中:

  • ( p 1 , p 2 , … , p k ) ( p_1, p_2, \dots, p_k ) (p1,p2,,pk) 是质数;
  • ( e 1 , e 2 , … , e k ) ( e_1, e_2, \dots, e_k ) (e1,e2,,ek) 是正整数;

2.示例

  1. 12 的分解
    12 = 2 2 × 3 1 12 = 2^2 \times 3^1 12=22×31
    质因数是 2 2 2 3 3 3

  2. 100 的分解
    100 = 2 2 × 5 2 100 = 2^2 \times 5^2 100=22×52
    质因数是 2 2 2 5 5 5
    修改后的格式如下:

  3. 97 的分解
    97 = 9 7 1 97 = 97^1 97=971
    97 97 97 是质数,本身就是唯一分解。


3.代码模板

import java.util.*;
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n=sc.nextInt();//Math.sqrt(n)可以进行时间优化for(int i=2;i<=Math.sqrt(n);i++){if(n%i==0){int count=0;//记录当前质数i的幂次while(n%i==0){count++;n/=i;//除掉所有因子i}System.out.println(i+" "+count);//输出对应的因子 以及 它的幂次}}if(n>1){//如果没有除完,最后一个数一定是质因子System.out.println(n+" "+1);//输出对应的因子 以及 它的幂次}}
}

二、例题

1>问题描述(2021蓝桥杯省赛)

一个整数 a a a 是一个完全平方数,是指它是某一个整数的平方,即存在一个整数 b b b,使得 a = b 2 a = b^2 a=b2

给定一个正整数 n n n,请找到最小的正整数 x x x,使得它们的乘积是一个完全平方数。


输入格式

输入一行包含一个正整数 n n n


输出格式

输出找到的最小的正整数 x x x


样例输入 1

12

样例输出 1

3

样例输入 2

15

样例输出 2

15

评测用例规模与约定

  • 对于 30 的评测用例, 1 ≤ n ≤ 1000 1 \leq n \leq 1000 1n1000,答案不超过 1000 1000 1000
  • 对于 60 的评测用例, 1 ≤ n ≤ 1 0 8 1 \leq n \leq 10^8 1n108,答案不超过 1 0 8 10^8 108
  • 对于所有评测用例, 1 ≤ n ≤ 1 0 12 1 \leq n \leq 10^{12} 1n1012,答案不超过 1 0 12 10^{12} 1012

2>解题思路

根据题意分析,我们要求最小的 x x x 使得 x × n x\times n x×n 是一个完全平方数。 显而易见的是,最坏情况, x x x 只能是 n n n本身。因此我们只需要在整数 n n n 以内去寻找最小的 x x x 即可。 结合唯一分解定理,任何一个大于1的整数,一定可以分解成一个或者多个质数(也叫素数)相乘。如果一个数是完全平方数,则经过唯一分解后,其质因子的幂次一定是偶数! 例如:

  1. 36 36 36 的分解
    36 = 2 2 × 3 2 36 = 2^2 \times 3^2 36=22×32
    幂次: 2 , 2 2, 2 2,2(都是偶数)
    因此, 36 36 36 是完全平方数。

  2. 144 144 144 的分解
    144 = 2 4 × 3 2 144 = 2^4 \times 3^2 144=24×32
    幂次: 4 , 2 4, 2 4,2(都是偶数)
    因此, 144 144 144 是完全平方数。

  3. 81 81 81 的分解
    81 = 3 4 81 = 3^4 81=34
    幂次: 4 4 4(是偶数)
    因此, 81 81 81 是完全平方数。

  4. 100 100 100 的分解
    100 = 2 2 × 5 2 100 = 2^2 \times 5^2 100=22×52
    幂次: 2 , 2 2, 2 2,2(都是偶数)
    因此, 100 100 100 是完全平方数。

  5. 72 72 72 的分解(反例)
    72 = 2 3 × 3 2 72 = 2^3 \times 3^2 72=23×32
    幂次: 3 , 2 3, 2 3,2 3 3 3 不是偶数)
    因此, 72 72 72 不是完全平方数。

至此,解题思路就很明了啦。唯一分解给定的 n n n 寻找其质因子,如果质因子对应的幂次是奇数,则需要补齐对应的一个质因子,把它累乘到答案中即可。


3>假娃

import java.util.*;// 1:无需package
// 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);//测试用例数据规模比较大,必须用longlong ans=1;long n=sc.nextLong();for(long i=2;i<=Math.sqrt(n);i++){if(n%i==0){long count=0;while(n%i==0){count++;n/=i;}if(count%2==1){ans*=i;}}}if(n>1)ans*=n;System.out.println(ans);}
}

3>C嘎嘎

#include <iostream>
#include <cmath> // 用于 sqrt 函数
using namespace std;int main() {long long ans = 1; // 用 long long 处理大数long long n;cin >> n; // 输入 nfor (long long i = 2; i <= sqrt(n); i++) {if (n % i == 0) { // 判断是否为因子long long count = 0;while (n % i == 0) { // 统计当前因子的幂次count++;n /= i;}if (count % 2 == 1) { // 如果幂次是奇数ans *= i;}}}if (n > 1) ans *= n; // 如果 n 还大于 1,则 n 本身是一个质数cout << ans << endl; // 输出结果return 0;
}

请添加图片描述

相关文章:

完全平方数——唯一分解定理

文章目录 一、唯一分解定理是什么&#xff1f;1.定义2.示例3.代码模板 二、例题1>问题描述&#xff08;2021蓝桥杯省赛&#xff09;输入格式输出格式样例输入 1样例输出 1样例输入 2样例输出 2评测用例规模与约定 2>解题思路3>假娃3>C嘎嘎 一、唯一分解定理是什么&…...

(详细)Springboot 整合动态多数据源 这里有mysql(分为master 和 slave) 和oracle,根据不同路径适配不同数据源

文章目录 Springboot 整合多动态数据源 这里有mysql&#xff08;分为master 和 slave&#xff09; 和oracle1. 引入相关的依赖2. 创建相关配置文件3. 在相关目录下进行编码&#xff0c;不同路径会使用不同数据源 Springboot 整合多动态数据源 这里有mysql&#xff08;分为maste…...

mock可视化生成前端代码

介绍&#xff1a;mock是我们前后端分离的必要一环、ts、axios编写起来也很麻烦。我们就可以使用以下插件&#xff0c;来解决我们的问题。目前支持vite和webpack。&#xff08;配置超级简单&#xff01;&#xff09; 欢迎小伙伴们提issues、我们共建。提升我们的开发体验。 vi…...

Spring Boot(6)解决ruoyi框架连续快速发送post请求时,弹出“数据正在处理,请勿重复提交”提醒的问题

一、整个前言 在基于 Ruoyi 框架进行系统开发的过程中&#xff0c;我们常常会遇到各种有趣且具有挑战性的问题。今天&#xff0c;我们就来深入探讨一个在实际开发中较为常见的问题&#xff1a;当连续快速发送 Post 请求时&#xff0c;前端会弹出 “数据正在处理&#xff0c;请…...

鸿蒙Harmony json转对象(1)

案例1 运行代码如下 上图的运行结果如下: 附加1 Json_msg interface 案例2 import {JSON } from kit.ArkTS; export interface commonRes {status: numberreturnJSON: ESObject;time: string } export interface returnRes {uid: stringuserType: number; }Entry Component …...

常见的RocketMQ面试题及其简要答案

以下是一些常见的RocketMQ面试题及其简要答案&#xff1a; 一、基础概念与架构 简述RocketMQ是什么&#xff0c;并说明其主要作用。 答案&#xff1a; RocketMQ&#xff1a;是阿里巴巴在2012年开源的一款分布式消息中间件&#xff0c;目前已经捐赠给Apache软件基金会&#xff…...

C#Object类型的索引,序列化和反序列化

前言 最近在编写一篇关于标准Mes接口框架的文章。其中有一个非常需要考究的内容时如果实现数据灵活和可使用性强。因为考虑数据灵活性&#xff0c;所以我一开始选取了Object类型作为数据类型&#xff0c;Object作为数据Value字段&#xff0c;String作为数据Key字段&#xff0c…...

Unity3D项目开发中的资源加密详解

前言 在Unity3D游戏开发中&#xff0c;保护游戏资源不被非法获取和篡改是至关重要的一环。资源加密作为一种有效的技术手段&#xff0c;可以帮助开发者维护游戏的知识产权和安全性。本文将详细介绍Unity3D项目中如何进行资源加密&#xff0c;并提供相应的技术详解和代码实现。…...

微调Qwen2:7B模型,加入未知信息语料

对于QWen2这样的模型,在微调的时候,语料的投喂格式满足ChatML这样的格式!!! OpenAI - ChatML: 下面是ChatML格式的介绍: https://github.com/openai/openai-python/blob/release-v0.28.0/chatml.mdhttps://github.com/openai/openai-python/blob/release-v0.28.0/chat…...

【Ubuntu】安装SSH启用远程连接

【Ubuntu】安装OpenSSH启用远程连接 零、安装软件 使用如下代码安装OpenSSH服务端&#xff1a; sudo apt install openssh-server壹、启动服务 使用如下代码启动OpenSSH服务端&#xff1a; sudo systemctl start ssh贰、配置SSH&#xff08;可跳过&#xff09; 配置文件 …...

【理论】测试开发工程师进阶路线

一、腾讯与阿里的质量保证服务参考 阿里云效测试能力与架构 腾讯 WeTest 测试能力全景图 二、测试开发技术体系 1.用户端测试&#xff1a; Web/App 测试 Web/App 自动化测试 用户端专项测试 用户端安全测试 2.服务端测试&#xff1a; 接口协议与 Mock 接口自动化测试 服务端…...

【BQ3568HM开发板】如何在OpenHarmony上通过校园网的上网认证

引言 前面已经对BQ3568HM开发板进行了初步测试&#xff0c;后面我要实现MQTT的工作&#xff0c;但是遇到一个问题&#xff0c;就是开发板无法通过校园网的认证操作。未认证的话会&#xff0c;学校使用的深澜软件系统会屏蔽所有除了认证用的流量。好在我们学校使用的认证系统和…...

動態住宅IP提升網站訪問成功率

動態住宅IP通常與普通家庭用戶的網路連接相關聯。這種IP地址的特點在於&#xff0c;它是動態變化的&#xff0c;用戶在每次連接時可能會獲得不同的IP地址。這與靜態IP形成了鮮明對比&#xff0c;後者在連接期間保持不變。傳統上&#xff0c;IP地址分為住宅IP和數據中心IP兩類。…...

2024年博客之星主题创作|2024年蓝桥杯与数学建模年度总结与心得

引言 2024年&#xff0c;我在蓝桥杯编程竞赛和数学建模竞赛中投入了大量时间和精力&#xff0c;这两项活动不仅加深了我对算法、数据结构、数学建模方法的理解&#xff0c;还提升了我的解决实际问题的能力。从蓝桥杯的算法挑战到数学建模的复杂应用&#xff0c;我在这些竞赛中…...

Spring Boot/MVC

一、Spring Boot的创建 1.Spring Boot简化Spring程序的开发,使用注解和配置的方式开发 springboot内置了tomact服务器 tomact:web服务器,默认端口号8080,所以访问程序使用8080 src/main/java:Java源代码 src/main/resource:静态资源或配置文件,存放前端代码(js,css,html) s…...

由于请求的竞态问题,前端仔喜提了一个bug

在平常的开发过程中&#xff0c;你可能会遇到这样一个bug。 测试&#xff1a;我在测一个输入框搜索的功能时&#xff0c;告诉你通过输入框输入的内容&#xff0c;和最终通过输入内容搜索出来的结果对不上。 前端&#xff1a;我是通过调用后端接口拿到的数据&#xff0c;这明显…...

【Day25 LeetCode】贪心Ⅲ

一、贪心Ⅲ 1、加油站 134 这道题直接想法是采用二重循环暴力搜索&#xff0c;简单粗暴但是会超时&#xff0c;是因为以每个点为起点最坏的情况可能都要遍历完全部的序列&#xff0c;有大量重复的操作&#xff0c;那有没有优化的地方呢&#xff1f;有一个结论&#xff1a;如果…...

蓝桥杯练习日常|递归-进制转换

未完待续&#xff0c;&#xff0c;&#xff0c;&#xff0c;&#xff0c;&#xff0c; 目录 蓝桥云课760数的计算 一、递归 题目&#xff1a; 我的解题代码&#xff1a; 二、进制转换 任意进制转十进制&#xff1a; 十进制转换为其他进制&#xff1a; 进制蓝桥杯题目…...

AI Agent:深度解析与未来展望

一、AI Agent的前世&#xff1a;从概念到萌芽 &#xff08;一&#xff09;早期探索 AI Agent的概念可以追溯到20世纪50年代&#xff0c;早期的AI研究主要集中在简单的规则系统上&#xff0c;这些系统的行为是确定性的&#xff0c;输出由输入决定。随着时间的推移&#xff0c;…...

《SwinIR:使用Swin-Transformer图像恢复》学习笔记

paper&#xff1a;2108.10257 GitHub&#xff1a;GitHub - JingyunLiang/SwinIR&#xff1a; SwinIR&#xff1a; 使用 Swin Transformer 进行图像修复 &#xff08;官方仓库&#xff09; 目录 摘要 1、Introduction 2、Related Work 2.1 图像修复 2.2 视觉Transformer…...

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下&#xff1a; struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案&#xff0c;如果正确地操作&#xff0c;重启Eureka集群中的节点&#xff0c;对已经注册的服务影响非常小&#xff0c;甚至可以做到无感知。 但如果操作不当&#xff0c;可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent

安全大模型训练计划&#xff1a;基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标&#xff1a;为安全大模型创建高质量、去偏、符合伦理的训练数据集&#xff0c;涵盖安全相关任务&#xff08;如有害内容检测、隐私保护、道德推理等&#xff09;。 1.1 数据收集 描…...