数论——质因数分解(C++)

一、构造质数表

(1)试除法

源代码:

#include<cstdio>
int n,s(1),i[1001];
int main()
{
scanf("%d",&n);
i[1]=2;
printf("2 ");
for (int a=3;s<n;a++)
{
bool t(0);
for (int b=1;b<=s;b++)
if (!(a%i[b]))
t=true;
if (!t)
{
s++;
i[s]=a;
printf("%d ",a);
}
} //利用曾经的素数,对现在的数进行检验,更为迅速地构造质数表。
return 0;
}

(2)筛法

源代码:

#include<cstdio>
int n,s(0);
bool f[100001]={0};
int main()
{
scanf("%d",&n);
for (int a=2;s<n;a++)
if (!f[a])
{
printf("%d ",a);
for (int b=2;b<=100;b++) //此循环变量以及数组的范围,还应以实际而定。
f[b*a]=true;
s++;
}
return 0;
}

二、Pollard Rho算法

源代码:

#include<cstdio>
int n;
void x1(int t,int k)
{
if (t==k)
printf("%d",k);
else
if (!(t%k))
{
printf("%d*",k);
x1(t/k,k);
}
else
x1(t,k+1);
} //利用奇妙的规则,进行递归。
int main()
{
scanf("%d",&n);
x1(n,2);
return 0;
}

时间: 2024-10-24 03:01:52

数论——质因数分解(C++)的相关文章

HDU3988-Harry Potter and the Hide Story(数论-质因数分解)

Harry Potter and the Hide Story Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 2193    Accepted Submission(s): 530 Problem Description iSea is tired of writing the story of Harry Potter, so,

简单数论之整除&质因数分解&唯一分解定理

[整除] 若a被b整除,即a是b的倍数,那么记作b|a("|"是整除符号),读作"a整除b"或"b能被a整除".a叫做b的约数(或因数),b叫做a的倍数. 简单数论之整除&质因数分解&唯一分解定理 原文地址:https://www.cnblogs.com/zjd-ac/p/10351608.html

【BZOJ2227】【ZJOI2011】看电影 [组合数学][质因数分解]

看电影 Time Limit: 10 Sec  Memory Limit: 259 MB[Submit][Status][Discuss] Description 到了难得的假期,小白班上组织大家去看电影.但由于假期里看电影的人太多,很难做到让全班看上同一场电影,最后大家在一个偏僻的小胡同里找到了一家电影院.但这家电影院分配座位的方式很特殊,具体方式如下: 1. 电影院的座位共有K个,并被标号为1…K,每个人买完票后会被随机指定一个座位,具体来说是从1…K中等可能的随机选取一个正整数,设其为L.

Codevs 1313 质因数分解

1313 质因数分解 题目描述 Description 已知正整数 n是两个不同的质数的乘积,试求出较大的那个质数 . 输入描述 Input Description 输入只有一行,包含一个正整数 n. 输出描述 Output Description 输出只有一行,包含一个正整数p,即较大的那个质数. 样例输入 Sample Input 21 样例输出 Sample Output 7 #include<iostream> #include<cstdio> #include<cm

HDU 3988 n!质因数分解

Harry Potter and the Hide Story Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 2324    Accepted Submission(s): 569 Problem Description iSea is tired of writing the story of Harry Potter, so, l

HDU 1695 GCD 欧拉函数+容斥原理+质因数分解

链接:http://acm.hdu.edu.cn/showproblem.php?pid=1695 题意:在[a,b]中的x,在[c,d]中的y,求x与y的最大公约数为k的组合有多少.(a=1, a <= b <= 100000, c=1, c <= d <= 100000, 0 <= k <= 100000) 思路:因为x与y的最大公约数为k,所以xx=x/k与yy=y/k一定互质.要从a/k和b/k之中选择互质的数,枚举1~b/k,当选择的yy小于等于a/k时,可以

求n!质因数分解之后素数a的个数

n!质因数分解后P的个数=n/p+n/(p*p)+n/(p*p*p)+......直到n<p*p*p*...*p //主要代码,就这么点东西,数学真是厉害啊!幸亏我早早的就退了数学2333 do { n/=m; w+=n; }while(n);

3164 质因数分解

3164 质因数分解 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description (多数据)给出t个数,求出它的质因子个数. 数据没坑,难度降低. 输入描述 Input Description 第一行 t 之后t行 数据 输出描述 Output Description t行 分解后结果(质因子个数) 样例输入 Sample Input 2 11 6 样例输出 Sample Output 1 2 数据范围及提示 Data

莫比乌斯函数-质因数分解

1240 莫比乌斯函数 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 莫比乌斯函数,由德国数学家和天文学家莫比乌斯提出.梅滕斯(Mertens)首先使用μ(n)(miu(n))作为莫比乌斯函数的记号.(据说,高斯(Gauss)比莫比乌斯早三十年就曾考虑过这个函数). 具体定义如下: 如果一个数包含平方因子,那么miu(n) = 0.例如:miu(4), miu(12), miu(18) = 0. 如果一个数不包含平方因子,并且有k个不同的质因子,那么miu(n)