求最大公约数和小于n的所有质数
来源:互联网 发布:最优化方法唐焕文答案 编辑:程序博客网 时间:2024/04/29 12:04
//algorithm.henum SWAP_TYPE{MEMORY, COMPLEX};struct SIntArray{ int *pData; int num; SIntArray():pData(NULL),num(0){} void Clear(){delete pData; pData = NULL; num = 0;}};void Wswap(int &m, int &n, SWAP_TYPE name = MEMORY);int Wgcd(int m, int n);SIntArray Wprime(int m);//algorithm.cppvoid Wswap(int &m, int &n, SWAP_TYPE name)//交换{ switch(name) { case MEMORY: m = m + n; n = m - n; m = m - n; break; case COMPLEX: int temp = m; m = n; n = temp; break; }}int GCD(int m, int n){ if( n == 0) { return m; } else { int r = m % n; GCD(n, r); }}int Wgcd(int m, int n)//寻找最大公约数{ if(m > n) { Wswap(m, n);//make sure m > n } int result = GCD(m, n); return result;}SIntArray Wprime(int m)//找所有小于m的质数{ SIntArray result; if(m <= 0) { return result; } int *number = new int [m+1]; for(int i = 0; i <= m; i++) { number[i] = i; } int limit = sqrt((float)m); for(int j = 2; j <= limit; j++) { if(number[j] != 0) { int temp = j*j; while(temp <= m) // eliminate { number[temp] = 0; temp = temp + j; } } } int count = 0; for(int j = 2; j <= m; j++) { if(number[j]) { number[count] = number[j]; count++; } } int *out = new int [count]; memcpy(out, number, count*sizeof(int)); delete number; number = NULL; result.pData = out; result.num = count; return result;}//main.cppint _tmain(int argc, _TCHAR* argv[]){/* Wgcd 最大公约数 int m,n; cout<<"input two number:"<<endl; cin>>m>>n; cout<<"greatest common divisor:"<<endl; cout<<Wgcd(m, n)<<endl;*/ int m; //小于n的所有质数 cout<<"input one number:"<<endl; cin>>m; cout<<"prime number:"<<endl; SIntArray result; result = Wprime(m); for(int i = 0; i <result.num; i++) { cout<<result.pData[i]<<" "; } result.Clear(); return 0;}
0 0
- 求最大公约数和小于n的所有质数
- 求小于正整数N的所有质数
- 求N以内所有质数的和
- 找小于N 的所有质数
- 求小于等于n的质数个数
- 【质数算法】——判断质数、求小于N的质数、求前N个质数
- 小于N的质数
- 求大于等于第一个数而且小于等于第二个数的所有的质数的和
- 快速求小于N的所有素数
- 筛法求小于等于整数n的所有质数
- 输出小于N的所有质数(素数)
- 求 小于 n 的 质数 几种方式
- 动态规划求小于等于n的质数个数
- 求N之内的所有质数
- C++求N以内所有的质数
- Java求n以内的所有质数
- 算法-求n内的所有质数
- 笔面试题之 求小于N的质数中和为N的质数对
- joyent 云计算服务公司
- hdu 1394 线段树单点更新
- unity3d射线的原理用法以及一个利用射线实现简单拾取的小例子
- 黑马程序员【Java多线程机制和用法】
- java笔记
- 求最大公约数和小于n的所有质数
- mvc的真实含义
- FingerGestures
- unity3D的FingerGestures插件
- Flex中 Array 的IndexOf 的作用
- Unity3D优化总结
- android面试准备3
- Unity3d操作的一些技巧知识点和BUG解决方案
- 第21周工作计划表