求最大公约数和小于n的所有质数
//algorithm.h
enum SWAP_TYPE{MEMORY, COMPLEX};
struct SIntArray
{
int *pData;
int num;
SIntArray():pData(NULL),num(){}
void Clear(){delete pData; pData = NULL; num = ;}
};
void Wswap(int &m, int &n, SWAP_TYPE name = MEMORY);
int Wgcd(int m, int n);
SIntArray Wprime(int m); //algorithm.cpp
void 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 == )
{
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 <= )
{
return result;
}
int *number = new int [m+];
for(int i = ; i <= m; i++)
{
number[i] = i;
} int limit = sqrt((float)m);
for(int j = ; j <= limit; j++)
{
if(number[j] != )
{
int temp = j*j;// j 2*j (j-1)*j 1:(j-1) have been processed, so only process j ... n/j
while(temp <= m) // eliminate
{
number[temp] = ;
temp = temp + j;
}
}
}
int count = ;
for(int j = ; 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.cpp
int _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 = ; i <result.num; i++)
{
cout<<result.pData[i]<<" ";
}
result.Clear(); return ;
}
求最大公约数和小于n的所有质数的更多相关文章
- [算法]求满足要求的进制(辗转相除(欧几里得算法),求最大公约数gcd)
题目 3在十进制下满足若各位和能被3整除,则该数能被3整除. 5在十六进制下也满足此规律. 给定数字k,求多少进制(1e18进制范围内)下能满足此规律,找出一个即可,无则输出-1. 题解 写写画画能找 ...
- Euclid求最大公约数
Euclid求最大公约数算法 #include <stdio.h> int gcd(int x,int y){ while(x!=y){ if(x>y) x=x-y; else y= ...
- 算法:欧几里得求最大公约数(python版)
#欧几里得求最大公约数 #!/usr/bin/env python #coding -*- utf:8 -*- #iteration def gcd(a,b): if b==0: return a e ...
- hdu----(5050)Divided Land(二进制求最大公约数)
Divided Land Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tota ...
- GCD求最大公约数
求最大公约数哪个强,果断GCD,非递归版本和递归版本如下: #include<iostream> using namespace std; int gcd(int a, int b){ / ...
- C辗转相除法求最大公约数的实现
int gcd(int a, int b)//求最大公约数,a为分子,b为分母 { ) return a; return gcd(b,a%b); }
- 辗转相除法_欧几里得算法_java的实现(求最大公约数)
辗转相除法,又被称为欧几里德(Euclidean)算法, 是求最大公约数的算法. 当然也可以求最小公倍数. 算法描述 两个数a,b的最大公约数记为GCD(a,b).a,b的最大公约数是两个数的公共素因 ...
- 欧几里得求最大公约数--JAVA递归实现
欧几里得算法求最大公约数算法思想: 求p和q的最大公约数,如果q=0,最大公约数就是p:否则,p除以q余数为r,p和q的最大公约数即q和r的最大公约数. java实现代码: public class ...
- c语言求最大公约数和最小公倍数
求最大公约数和最小公倍数 假设有两个数a和b,求a,b的最大公约数和最小公倍数实际上是一个问题,得出这两个数的最大公约数就可以算出它们的最小公倍数. 最小公倍数的公式是 a*b/m m为最大公约数 因 ...
随机推荐
- String、StringBuffer与StringBuilder之间区别[全屏看文]
String.StringBuffer与StringBuilder之间区别[全屏看文] 最近学习到StringBuffer,心中有好些疑问,搜索了一些关于String,StringBuffer,S ...
- Saltstack常用模块及API
Saltstack提供了非常丰富的功能模块,涉及操作系统的基础功能.常用工具支持等,更多模块信息可以查看官网模块介绍.也可以通过sys模块列出当前版本支持的模块. salt '*' sys.list_ ...
- iOS项目重命名以及Xcode修改Scheme名称图文详解 (yoowei)
在iOS开发中,有时候想改一下项目的名字,都会遇到很多麻烦.温馨提醒:记得备份. 看到项目名称,总感觉有点low,所以尝试着要将其更改一下. 项目原结构如下: 更改后的项目结构如下: 下面开始更改操作 ...
- [问题] UISearchBar 点击取消后跳动的问题
问题详情: 首先是TableView 作为 NavigationController 的 RootViewContrller, 然后UISearchBar 添加到TableView 的 headV ...
- Orchard源码分析(7.2):Controller相关
概述 默认情况下,ASP.NET MVC内置的DefaultControllerFactory负责Controller实例的创建.Orchard定义了一个继承自DefaultControllerFac ...
- Cucumber
http://www.ibm.com/developerworks/library/a-automating-ria/ Cucumber is a testing framework that hel ...
- C# Redis消息队列例子
class Program { //版本2:使用Redis的客户端管理器(对象池) public static IRedisClientsManager redisClientManager = ne ...
- 让vim成为ide
gvim的tabe标签页打开跟在同一个页面(标签中)打开,对buffer的影响都是一样的,都是增加新的buffer 可以认为gvim的命令行模式跟bash shell里的操作差不多 在命令行模式中通过 ...
- php简单实用的操作文件工具类(创建、移动、复制、删除)
php简单实用好用的文件及文件夹复制函数和工具类(创建.移动.复制.删除) function recurse_copy($src,$dst) { // 原目录,复制到的目录 $dir = opend ...
- 【AngularJS】—— 7 模块化
AngularJS有几大特性,比如: 1 MVC 2 模块化 3 指令系统 4 双向数据绑定 那么本篇就来看看AngularJS的模块化. 首先先说一下为什么要实现模块化: 1 增加了模块的可重用性 ...