数论整理之唯一质因子分解方程

2023-11-16

唯一质因子分解方程

每个大于1的自然数均可写为质数的积,而且这些素因子按大小排列之后,写法仅有一种方式。
标称:

#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;
const int MAXN = 65540;
int a[MAXN];
int main(){
    int n;
    while(cin >> n && n){
        int cnt = 0;

        for(int i=2;i<=n;++i){
            while(n % i == 0){
                a[cnt++] = i;
                n /= i;
            }
        }
        for(int i=0;i<cnt-1;++i){
            cout << a[i] << "*";
        }
        cout << a[cnt-1] << endl;
    }
    return 0;
}

one 试除法:无论素数判定还是因子分解,试除法(Trial Division)都是首先要进行的步骤。令m=n,从2~根n一一枚举,如果当前数能够整除m,那么当前数就是n的素数因子,并用整数m
将当前数除尽为止。
若循环结束后m是大于1的整数,那么此时m也是n的素数因子

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <math.h>
#define N 65535
using namespace std;
int factor[N],top;
void divide(int n)
{
    for(int i=2; i<=sqrt(n+0.0); i++)
    {
        while(n%i==0)
        {
            top++;
            factor[top]=i;
            n/=i;
        }
    }
    if(n!=1)
    {
        top++;
        factor[top]=n;
    }
    for(int i=1; i<=top-1; i++)
    {
        printf("%d*",factor[i]);
    }
    printf("%d\n",factor[top]);
    return ;
}
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        top=0;
        divide(n);
    }
    return 0;
}

two:在试除法基础上加上筛法(埃氏筛),减少时间

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <math.h>
#define N 65540
using namespace std;
int factor[N],top,cnt,prime[N];
bool b[N];
void make_prime()
{
    top=0;
    b[0]=b[1]=false;
    b[2]=true;
    prime[++top]=2;
    for(int i=3; i<N; i++)
        if(i%2==0) b[i]=false;
        else b[i]=true;
    double t=sqrt(1000000*1.0);
    for(int i=3; i<=t; i++)
    {
        if(b[i])
        {
            prime[++top]=i;
            for(int j=i*i; j<N; j=j+i)
            {
                b[j]=false;
            }
        }
    }
}
void divide(int n)
{
    cnt=0;
    int temp=sqrt(n+0.0);
    for(int i=1; i<=top; i++)
    {
        if(prime[i]>temp)
            break;
        while(n%prime[i]==0)
        {
            cnt++;
            factor[cnt]=prime[i];
            n/=prime[i];
        }
    }
    if(n!=1)
    {
        cnt++;
        factor[cnt]=n;
    }
    for(int i=1; i<=cnt-1; i++)
    {
        printf("%d*",factor[i]);
    }
    printf("%d\n",factor[cnt]);
    return ;
}
int main()
{
    int n;
    make_prime();
    while(scanf("%d",&n)!=EOF)
    {
        divide(n);
    }
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数论整理之唯一质因子分解方程 的相关文章

  • go中斐波切纳数列

    package main import fmt runtime time func main runtime GOMAXPROCS 1 fmt Println sum 5 fmt Println amount 5 fmt Println a
  • 信创概念又火了,但这次有点不一样

    从 小 信创到 大 信创拐点正在来临 作者 桑明强 出品 产业家 国外软件公司的 好日子 快要到头了 源头要从信创开始谈起 去年9月的时候 国家下发了79号文 全面指导国资信创产业发展和进度 总结起来 核心要点有3项 1 全面替换 央企信创
  • 【译】12 条你可能还不知道的 Rust 提示和技巧

    12 Rust Tips and Tricks you might not know yet 译文 12 条你可能还不知道的 Rust 提示和技巧 原文链接 https federicoterzi com blog 12 rust tips
  • idea 中使用dataBase插件

    欢迎关注微信公众号 程序员小圈圈 转载请标明出处 原文首发于 www zhangruibin com 本文出自于 RebornChang的博客 idea对诸多数据库插件提供支持 举例MySQL数据库 使用idea中数据库插件首先把数据库da
  • leetcode 21. 合并两个有序链表 (python)

    将两个有序链表合并为一个新的有序链表并返回 新链表是通过拼接给定的两个链表的所有节点组成的 例 输入 1 gt 2 gt 4 1 gt 3 gt 4 输出 1 gt 1 gt 2 gt 3 gt 4 gt 4 本题同样可以很单线条解决 代码

随机推荐

  • 使用 windows 批处理指令(BAT文件)进行压缩文件(zip)解压操作

    以下指令包括文件删除 复制 zip文件解压操作 使用7z指令指令进行解压操作前 需要确保 windows 的 path 系统环境变量中存在7z的安装路径 7z的下载地址 https www 7 zip org download html 替
  • 【资源下载】Linux中下载并安装gdb调试器(附下载链接)

    资源下载 Linux中下载并安装gdb调试器 附下载链接 gdb是Linux环境下的代码调试工具 为了能在linux环境下更有好的编程体验 接下来我来教大家怎么安装 文章目录 资源下载 Linux中下载并安装gdb调试器 附下载链接 1 先
  • 无人车沿着指定线路自动驾驶与远程控制的实践应用

    有了前面颜色识别跟踪的基础之后 我们就可以设定颜色路径 让无人车沿着指定线路做自动驾驶了 视频 PID控制无人车自动驾驶 有了前几章的知识铺垫 就比较简单了 也是属于颜色识别的一种应用 主要是掌握自动驾驶中的一些基础知识 这样就可以进一步去
  • 第二讲 MySQL体系结构与存储引擎

    1 MySQL体系结构 1 1 数据库与数据库实例 数据库 物理操作系统中的文件和其他文件类型的集合 除了硬盘存储的文件 也可以是存放在内存中的文件 数据库实例 有数据库后台进程 线程以及一个共享内存区域组成 共享内存可以被后台进程 线程所
  • 【数据结构期末例题】

    前言 本文是博主自己在准备学校数据结构考试时的总结 各个知识点都贴有对应的详细讲解文章以供大家参考 当然文中还有许许多多的截图 这些是博主对主要内容的摘取 对于那些基础较好的同学可以直接看截图 减少跳转对应文章浏览全文的时间 感谢本文引用文
  • 弹性盒子(display: flex)布局超全讲解

    文章目录 什么是弹性布局 弹性布局的特点 容器的属性 justify content align items flex direction flex wrap flex flow align content order属性 flex gro
  • QT笔记-Label控件显示图片

    1 Label控件动态显示图片 动态显示图片1 int DeviceEdit OnLensPic bool checked AfCd cd QImage img img load UI lens bmp QImage imgScaled i
  • EduCoder_web实训作业--页面结点元素

    第一关 B C D A B 第二关 section section
  • LeetCode从零开始——第一题

    1 两数之和 题目描述 解题思路 代码执行 题目描述 给定一个整数数组 nums 和一个目标值 target 请你在该数组中找出和为目标值的那 两个 整数 并返回他们的数组下标 你可以假设每种输入只会对应一个答案 但是 数组中同一个元素不能
  • WPF图表Live Charts(四)动态折线图

    简介 前面介绍了Live Charts的基础和设置 接下将介绍如何绘制动态的折线图 实时更新数据的折线图 效果预览 前台代码
  • 容器常用函数、algorithm头文件

    偶然发现有个
  • C++ 大话设计之《代理模式》(优缺点,设计原理,常用场景)

    代理模式是一种结构型模式 优点 可以实现对原对象的访问控制 代理对象可以在访问原对象之前执行一些额外操作 例如检查权限 记录日志等 可以提供额外的功能 代理对象可以在不修改原对象的情况下 为原对象提供额外的功能 可以减少客户端代码的复杂性
  • 【QT基础入门】1、QT开发环境搭建

    文章目录 一 学习所需要的软件 二 安装 VS2012 三 win10 下安装 QT 一 学习所需要的软件 Visual Studio 2012 Qt SDK 4 7 4 Qt Creator 2 4 1 Visutal Studio 20
  • 2021-10-26尤破金10.27外汇黄金白银实时操作策略布局

    黄金行情走势分析 周二 10月26日 国际金价回落 受到美元上扬打压 投资者在本周的关键央行政策会议前评估各国央行对日益增长的通胀压力可能做出的反应 分析师说 在当前的通胀环境下 黄金应能维持相对良好的支撑 直到我们得到美联储明确的鹰派转向
  • 2017总结

    这一年还是大部分时间做着开发的工作 在创业的一年多时间里 好像自己所做的事情不太像一个创业者做的事 用了太多的时间在具体的工作当中了 对于市场 对于营销推广都是在被动的接收 没有全面的 主动的去做事情 这也可能是我们做技术的出来创业的弊端
  • Vue.js 中hash路由和history路由原理及优缺点

    Vue js 中hash路由和history路由原理及优缺点 hash模式 原理 在 url 中的 之后对应的是 hash 值 其原理是通过hashChange 事件监听hash值的变化 根据路由表对应的hash值来判断加载对应的路由加载对
  • python基础----02-----字面量、变量、数据类型及其转换、标识符以及字符串、数据输入(input语句)

    一 字面量 1 字面量 字面量 在代码中 被写下来的的固定的值称之为字面量 类似C C 的字符串常量 1 1 常见的python值类型 Python中常见的值类型 实际上在C C 字面量和这里的类型还是有区别的 体现在内存存储中 字面量存储
  • 批处理命令将文件合并成一个pdf_如何在 Linux 命令行操作 PDF

    pdftk 命令提供了许多处理 PDF 的命令行操作 包括合并页面 加密文件 添加水印 压缩文件 甚至还有修复 PDF Sandra Henry stocker 作者 虽然 PDF 通常被认为是相当稳定的文件 但在 Linux 和其他系统上
  • linux修改用户名

    1 开root sudo passwd 2 修改sudoer 防止过程中用户权限不够 命令 gedit etc sudoer root ALL ALL ALL ALL 下添加 xxx ALL ALL ALL ALL 3 修改shadow g
  • 数论整理之唯一质因子分解方程

    唯一质因子分解方程 每个大于1的自然数均可写为质数的积 而且这些素因子按大小排列之后 写法仅有一种方式 标称 include