快速求n的质因子(数论)
快速求n的质因子
如何尽快地求出n的质因子呢?我们这里又涉及两个好的算法了!
第一个:用于每次只能求出一个数的质因子,适用于题目中给的n的个数不是很多,但是n又特别大的
#include<stdio.h>
int main()
{
__int64 a[100],num,i,n;
while(scanf("%I64d",&n)!=EOF)
{
num=0;
for(i=2;i*i<=n;i++)
{
if(n%i==0)
{
a[num++]=i;
while(n%i==0)
n=n/i;
}
}
if(n>1)
a[num++]=n;
for(i=0;i<num;i++)
printf("%I64d ",a[i]);
printf("\n");
}
return 0;
}
第二个:一次求出1~n的所有数的质因子,适用于题目中给的n个数比较多的,但是n不是很大的。
#include<iostream>
#include<vector>
#include<algorithm>
#include<string.h>
using namespace std;
int visited[100010];
vector<int>a[100010];
void init()
{
int i,j;
for(i=0;i<100010;i++)
a[i].clear();//vector的清空
memset(visited,0,sizeof(visited));
for(i=2;i<=100000;i++)
{
if(visited[i]==0)//i是素数这是可以保证的
{
a[i].push_back(i);
for(j=i+i;j<=100000;j+=i)//筛选素数,其实这种方法没以前那种素数法快,但是这里用来求一个数的质因子就比较好了
{
visited[j]=1;
a[j].push_back(i);
}
}
}
}
int main()
{
int i,j;
init();
for(i=0;i<=50;i++)
{
printf("%d:",i);
for(j=0;j<a[i].size();j++)
printf("%d ",a[i][j]);
printf("\n");
}
return 0;
}
转载自:http://www.cnblogs.com/jiangjing/archive/2013/06/03/3115470.html
快速求n的质因子(数论)的更多相关文章
- POJ2992:Divisors(求N!因子的个数,乘性函数,分解n!的质因子(算是找规律))
题目链接:http://poj.org/problem?id=2992 题目要求:Your task in this problem is to determine the number of div ...
- B - Fadi and LCM CodeForces - 1285C 质因子
题目大意很简单,给你一个整数X,让你求a和b,使得max(a,b)尽可能的小,然后打印a,b 题解:想到了质因子分解,也考虑到了暴力,但是觉得暴力的话会TLE,所以打算用贪心做,然后就一直Wa.... ...
- Zoj 3529 A Game Between Alice and Bob 数论+博弈Nim 快速求数中有多少个素数因子
本题涉及博弈论中的Nim游戏博弈. Nim游戏博弈详解链接: http://www.cnblogs.com/exponent/articles/2141477.html 本题解题报告详解链接: htt ...
- NYOJ-476谁是英雄,分解质因子求约数个数!
谁是英雄 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 十个数学家(编号0-9)乘气球飞行在太平洋上空.当横越赤道时,他们决定庆祝一下这一壮举.于是他们开了一瓶香槟.不 ...
- Pollard-Rho算法求大数质因子
/* * 大整数分解到现在都是世界级的难题,但却是一个重要的研究方向,大整数在公共密钥的研究上有着重要的作用 * Pollard Rho算法的原理就是通过某种方法得到两个整数a和b.而待分解的大整数为 ...
- Java实现 蓝桥杯 算法提高 Monday-Saturday质因子
试题 算法提高 Monday-Saturday质因子 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 这个问题是个简单的与数论有关的题目,看起来似乎是"求正整数的所有质因子 ...
- hdu5317 RGCDQ (质因子种数+预处理)
RGCDQ 题意:F(x)表示x的质因子的种数.给区间[L,R],求max(GCD(F(i),F(j)) (L≤i<j≤R).(2<=L < R<=1000000) 题解:可以 ...
- BZOJ 3181([Coci2012]BROJ-最小质因子为p的第k小素数)
3181: [Coci2012]BROJ Time Limit: 10 Sec Memory Limit: 64 MB Submit: 26 Solved: 7 [ Submit][ Stat ...
- Acdream1084 寒假安排 求n!中v因子个数
题目链接:pid=1084">点击打开链接 寒假安排 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 128000/64000 ...
随机推荐
- HTML“计算机输出”标签 <code><kbd><samp><tt><var><pre>
我们并不反对使用它们,但是如果您只是为了达到某种视觉效果而使用这些标签的话,我们建议您使用样式表,那么做会达到更加丰富的效果. <code> 标签-定义计算机代码文本. 定义和用法: &l ...
- echsop常用模板方法.
echsop模板遍历文件: {foreach from=$goods_list item=goods} {$goods.name} {/foreach} 不知道为什么ecshop中foreach像个注 ...
- F2工作流引擎之 工作流运转模型(三)
1流程单起点单终止模型 单起点:一个流程定义必须有且唯一起点 单结束点:一个流程定义必须有且唯一结束点. 约定:提单与结束是每个流程必须有的活动,且唯一只有一个提单和结束. 2串行模型 描述:串行(S ...
- Citrix 虚拟化笔记
利用win7 x64/Vmware workstation 10练习Citrix虚拟化 [安装Xenserver 6.2] 1)硬盘空间不足:要求最小8G 2)不支持硬件虚拟化:找到建立的XENSER ...
- 【matlab】MATLAB程序调试方法和过程
3.8 MATLAB程序的调试和优化 在MATLAB的程序调试过程中,不仅要求程序能够满足设计者的设计需求,而且还要求程序调试能够优化程序的性能,这样使得程序调试有时比程序设计更为复杂.MATLAB ...
- OVM-V1.2 版发布,新增实时监控、支持一键升级
OVM是国内首款.完全免费.企业级--混合虚拟化管理平台,OVM是从中小企业目前的困境得到启发,完全基于国内企业特点开发,更多的关注国内中小企业用户的产品需求. OVM-V1.2 该版本功能变动如下: ...
- QT中给各控件增加背景图片(可缩放可旋转)的几种方法
http://blog.csdn.net/liukang325/article/details/44832397 1. 给QPushButton 增加背景图片:背景图片可根据Button大小自由缩放. ...
- yii2-搜索带分页,分页的两种方式
1.文章表关联 <?php //...other code //关联 public function getCate(){ return $this->hasOne(ArticleCate ...
- Linux内核分析——跟踪分析Linux内核的启动过程
万子惠 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程 实验部分 menu程序: cd LinuxKernel/ qemu -kernel linux-3.18.6/a ...
- javascript eval函数解析json数据时为什加上圆括号eval("("+data+")")
原因很简单:因为在js中{}表示一个语句块(代码段),所有加上"()"表示表达式