//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的所有质数的更多相关文章

  1. [算法]求满足要求的进制(辗转相除(欧几里得算法),求最大公约数gcd)

    题目 3在十进制下满足若各位和能被3整除,则该数能被3整除. 5在十六进制下也满足此规律. 给定数字k,求多少进制(1e18进制范围内)下能满足此规律,找出一个即可,无则输出-1. 题解 写写画画能找 ...

  2. Euclid求最大公约数

    Euclid求最大公约数算法 #include <stdio.h> int gcd(int x,int y){ while(x!=y){ if(x>y) x=x-y; else y= ...

  3. 算法:欧几里得求最大公约数(python版)

    #欧几里得求最大公约数 #!/usr/bin/env python #coding -*- utf:8 -*- #iteration def gcd(a,b): if b==0: return a e ...

  4. hdu----(5050)Divided Land(二进制求最大公约数)

    Divided Land Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tota ...

  5. GCD求最大公约数

    求最大公约数哪个强,果断GCD,非递归版本和递归版本如下: #include<iostream> using namespace std; int gcd(int a, int b){ / ...

  6. C辗转相除法求最大公约数的实现

    int gcd(int a, int b)//求最大公约数,a为分子,b为分母 { ) return a; return gcd(b,a%b); }

  7. 辗转相除法_欧几里得算法_java的实现(求最大公约数)

    辗转相除法,又被称为欧几里德(Euclidean)算法, 是求最大公约数的算法. 当然也可以求最小公倍数. 算法描述 两个数a,b的最大公约数记为GCD(a,b).a,b的最大公约数是两个数的公共素因 ...

  8. 欧几里得求最大公约数--JAVA递归实现

    欧几里得算法求最大公约数算法思想: 求p和q的最大公约数,如果q=0,最大公约数就是p:否则,p除以q余数为r,p和q的最大公约数即q和r的最大公约数. java实现代码: public class ...

  9. c语言求最大公约数和最小公倍数

    求最大公约数和最小公倍数 假设有两个数a和b,求a,b的最大公约数和最小公倍数实际上是一个问题,得出这两个数的最大公约数就可以算出它们的最小公倍数. 最小公倍数的公式是 a*b/m m为最大公约数 因 ...

随机推荐

  1. python 常见排序实例

    使用Python 基础排序算法设计,冒泡排序,插入排序,快速排序... 需求 对一组无序数据进行排序算法设计,要求如下: 输入:[1, 3, 5, 23, 75, 34, 456, 86, 22, 7 ...

  2. 源程序出现各种奇怪的符号P

    依次展开Windows->Preferences->General->Editors->Text Editor 将右边的Show whitespace characters的复 ...

  3. Jedis 例子(demo)大全

    第一步:到git下载jedis源码,如果你用maven或者gradle,那么直接下官方的即可,地址:https://github.com/xetorthio/jedis:如果你用ant,下载这个:ht ...

  4. hibernate 批量增加 修改 删除

    4.2  Hibernate的批量处理 Hibernate完全以面向对象的方式来操作数据库,当程序里以面向对象的方式操作持久化对象时,将被自动转换为对数据库的操作.例如调用Session的delete ...

  5. bootstrapValidator.js 做表单验证

    有这样的一个场景,我们在提交form表单的时候 可能要做一些验证,比如判断是不是为空,电话的格式验证,邮箱的格式验证等等,手写起来也是可以得. 但是今天我介绍一个bootstrap插件简化开发.就是b ...

  6. mysql 分页性能优化

    最简单的分页方法是这样的 , 该表中存在5w左右数据 执行时间平均在10s左右,因此该种方式在数据量大的情况下查询效率极低. 优化方式有以下几种 1.此种方式平均在7-8s之间(CreateDate ...

  7. 不解压直接查看tar包内容

    . file.tar.gz gzip -dc file.tar.gz | tar tvf - . file.tar.bz2 bzip2 -dc file.tar.bz2 |tar tvf - . fi ...

  8. UTF-8-BOM

    https://www.zhihu.com/question/20167122 知乎 「带 BOM 的 UTF-8」和「无 BOM 的 UTF-8」有什么区别?网页代码一般使用哪个? http://b ...

  9. 字符编码-UNICODE,GBK,UTF-8区别【转转】

    字符编码介绍及不同编码区别 今天看到这篇关于字符编码的文章,抑制不住喜悦(总结的好详细)所以转到这里来.转自:祥龙之子http://www.cnblogs.com/cy163/archive/2007 ...

  10. NFS服务器简介

    1.NFS为Network File System(网络文件系统):不同机器不同的操作系统可以彼此共享数据文件.      NFS的配置简单,启动remote procedure call(RPC, ...