求多个数的质因子
我学到了一种新的素数筛选法,不过相对于以前那种素数筛选法还是慢了点,不过用来求一个数的质因子的话还是比较好的!!
代码实现:
#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; }
posted on 2013-06-01 13:16 后端bug开发工程师 阅读(1662) 评论(2) 编辑 收藏 举报