`
JokerT
  • 浏览: 22955 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

长整数的因子分解

阅读更多

练习题做多了就发现有好多整数相关的题目都要用到因子分解(或是其变种,如整除之类),比如有一个题:给定整数N,若N可以分解为四个整数乘积,我们称其级别为1,如果上述分解的因子每个都能进行同样的分解,我们称N级别为2,依次类推,求任意N的级别

 

我的思路是设立一个全局变量count 通过递归函数进行N的逐步整除,每次整除count都要加1,通过count控制在4以内结束递归,然后对N的每个因子进行类似处理。类似于上一篇博客的问题。大致代码如下(未完成):

后来我发现这样做行不通,不说最后能否运行,但是复杂度就已经惊人,最差为N!级别

最近好像很迷信递归,但这个题来讲递归不是好办法。

接下来参考其他人的算法,确实让我开了眼界。该程序来自stubbscroll,如果我的考虑是自上而下,他的做法应该是自下而上,先将N分解为质因子,通过计算质因子数可以多少次被4除就能判定N的级别了。非常简洁,复杂度应该为O(NlogN)

一下为代码:

分享到:
评论

相关推荐

    整数因子分解问题

    整数因子分解是数论中的一个基础而重要的问题,其核心在于寻找一个大于1的正整数n的所有可能的因子分解方式。因子分解的目的是将给定的正整数n表达为若干个较小正整数的乘积,这些较小正整数则被称为n的因子。这一...

    算法分析与设计:分治法(整数的因子分解+Gray码)(C++可执行源码+完整算法分析)

    题目 1: 给定一个整数 n,对其进行因子分解,编写程序,求解所有的分解方法,并统计其有多少种不同的分解方法。 输入要求: 输入整数 n,占 1 行。 输出要求: 输出的第 1 行为一个整数,即该整数有多少种因子分解...

    素因子分解,递归,c实现

    **定义**: 素因子分解是指将一个正整数表示为多个素数相乘的形式。例如,数字18可以表示为\(2 \times 3^2\)。 **算法**: 给定的代码实现了通过递归方式对输入的正整数进行素因子分解的功能。具体来说,程序首先读取...

    超过100位大整数分解工具GGNFS最新2022可用版本

    RSA是一种非对称加密算法,它的安全性基于大整数因子分解的困难性。如果能够快速分解一个大素因数的合数,那么RSA的私钥就可以被推导出来,从而破解加密的信息。 GGNFS算法的核心在于 sieving(筛选) 和 lattice ...

    分解质因数2.04,对29位以内整数进行分解,同时附带有高数度计算工具

    传统的分解方法需要逐个检验每一个自然数是否为所求合数的因子,这种方法在处理较大数字时会变得异常缓慢。而“分解质因数2.04”软件采用了更加高效的算法,如Pollard's rho算法、Quadratic Sieve法或Elliptic Curve...

    二次整数分解

    二次整数分解是一种在数学和密码学中常见的计算任务,主要目标是将一个大整数表示为两个非平凡因子(即除了1和本身之外的正整数)的乘积。在本例中,我们讨论的是如何用C#编程语言来实现这一过程。描述中提到的算法...

    RSA.rar_rsa 签名_大整数分解

    本项目旨在深入理解和实践RSA算法的加密与签名功能,同时探讨其安全性基础——大整数因子分解难题。 首先,RSA(Rivest–Shamir–Adleman)是由Ron Rivest、Adi Shamir和Leonard Adleman三位科学家于1977年提出的,...

    算法-数论- 整数分解.rar

    整数分解是数论中的一个核心概念,它在密码学、计算复杂性理论以及计算机科学的其他领域都有着广泛的应用。这个主题通常涉及到将一个大整数表示为两个或多个较小整数的乘积,比如找到两个质数p和q使得n=p*q。这种...

    西南交通大学算法理论课作业4.rar

    题目 1: 给定一个整数 n,对其进行因子分解,编写程序,求解所有的分解方法,并统 计其有多少种不同的分解方法。 题目 2:用分治策略设计实现 Gray 码:Gray 码是一个长度为 2 的 n 次方的序列,序列 中无相同元素...

    相对因子宽度与可S-因子分解矩阵 (2007年)

    设S是实数集R的一个非空子集,如果存在S上的矩阵B,使得A=BBT,则称A是可S-因子分解的.对于一个实对称矩阵A,如果存在一个最小正整数k以及实矩阵(长方形)V,使得A= VVT,且V的每一列至多只有k个非零元素,则称A的...

    RSA算法的分析与实现.doc

    RSA算法的安全性主要依赖于大整数因子分解的计算复杂性,目前在实际应用中,对于足够大的素数,这一过程被认为是极其困难的。 【RSA算法构成】 RSA算法由以下几个步骤构成: 1. 选取两个大素数P和Q,计算它们的...

    公钥密码系统及RSA公钥算法[参考].pdf

    RSA算法由Rivest、Shamir和Adleman三位学者在1977年提出,它的理论基础来源于数论,特别是大整数因子分解的困难性。在RSA系统中,每个用户有一对密钥:公钥和私钥。公钥是可以公开的,任何人都可以获取并用于加密...

    RSA.rar_rsa

    这个算法基于两个大素数的乘积难以分解的数学难题,即大整数因子分解问题。 首先,我们来看RSA加密过程。在RSA系统中,每个用户都有一对密钥:公钥和私钥。公钥可以公开,任何人都可以获得;而私钥必须保密,只有...

    大整数运算

    这些算法将大整数分解为较小的部分,然后通过递归或直接计算来完成乘法。在C++中,可以自定义一个大整数类,内部存储为字符数组或整型数组,用以存储每一位数字。 二、大整数除法 大整数除法相对复杂,可采用长除法...

    RSA.rar_RSA加密技术_非对称加密

    欧拉定理是RSA算法的基础之一,它在模数的乘法逆元计算和大整数因子分解中起到关键作用。 RSA的工作原理基于两个大素数的乘积非常难以分解的事实。首先,选择两个足够大的素数p和q,然后计算它们的乘积n=p*q。接着...

    61因式分解.ppt

    8. 分解长除法与短除法:当多项式较复杂时,可以采用类似于整数除法的方法进行因式分解,尤其适用于高次多项式。 9. 零因子性质:任何非零数的乘积不为零,这意味着如果一个多项式的值为零,那么至少有一个因子的值...

    公钥密码学与RSA公钥密码学与RSA

    RSA算法的核心原理基于大整数因子分解的困难性。算法的基本步骤包括: 1. **密钥生成**:首先选择两个大素数p和q,计算它们的乘积n=p*q,n的质因数只有p和q。然后选择一个整数e,满足1(p-1)*(q-1),且e与(p-1)*(q-1...

    第七八讲 公钥密码1

    1977年,Rivest, Shamir 和 Adleman (RSA) 提出了第一个安全且实用的公钥密码算法,它是基于大整数因子分解问题的难度。RSA算法的加密和解密过程分别依赖于两个不同的密钥,公钥用于加密,私钥用于解密,其安全性...

    RSA.zip_rsa

    这种算法基于大整数因子分解的困难性,即找到两个大素数的乘积非常容易,但将其因子分解出来却极其困难,这为数据加密提供了坚实的基础。 在RSA算法中,主要有两个密钥:公钥和私钥。公钥可以公开,用于加密信息;...

Global site tag (gtag.js) - Google Analytics