求质因数问题
来源:互联网 发布:社交网络 thunder 编辑:程序博客网 时间:2024/06/05 11:43
一、求一个数的所有质因数(尤其n很大时)
我刚开始想的是观察题目给的数据范围,预处理出能够满足这个范围的所有素数,也就是2~sqrt(n)范围内的素数,然后根据输入的n一次遍历这些素数,判断是否整除,但是有一个bug是这种方法只能求出sqrt(n)以内的质因数。所以这个方法不可行。
可行方案:
long long a[],n,cnt=0;for(int i=2;i*i<=n;i++){if(n%i==0){a[cnt++]=i;while(n%i==0) n/=i;}}if(n>1) a[cnt++]=n;
二、求多个数的质因数(n不是很大)
在素数筛的时候加了一个vector数组就实现了。
这里其实就用到了我上面的想法,不过正如你所看到的这种方法只能求n不大的。
int vis[100010];//测试了一下,10^6的时候就很慢了,所以用来做最多10^5的数 vector<int>a[100010];memset(vis,0,sizeof(vis));for(int i=0;i<100010;i++) a[i].clear();for(int i=2;i<100010;i++){if(!vis[i]){vis[i]=1;a[i].push_back(i); for(int j=2;j*i<100010;j++){vis[j*i]=1;a[j*i].push_back(i);}}}
0 0
- 求质因数问题
- 求质因数
- 求质因数
- 求质因数的和
- 求正整数的质因数
- 如何求最大质因数?
- Python3实现求质因数
- 求正整数分解质因数
- 求最大质因数
- 产生素数模板 求质因数 求所有质因数的乘积
- 求一个数的质因数
- 面试题:求质因数分解
- 求一个整数的质因数
- 求600851475143的最大质因数
- 求一个数的质因数
- 质因数分解法求最大公约数
- 求整数N的质因数
- 求一个数的质因数
- 黑马程序员————Java基础日常笔记---IO流二
- 【树形dp】hdu 2412 Party at Hali-Bula
- Day03-JavaScript高级编程
- 理解微软100题
- 如何使用Word2007发布csdn博文
- 求质因数问题
- [Leetcode 62, Medium] Unique Paths
- LightOJ1038-Race to 1 Again
- Android overlay系统
- ------------参数传递的四种形式----- URL,超链接,js,form表单
- github
- 数组及函数的应用篇
- [Leetcode 63, Medium] Unique Paths II
- ZOJ 3630 Information(Tarjanq)