//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. 极光推送 JPush 项目简单使用

    打开或者关闭推送 - (void)pushSwitch:(UISwitch *)sender { if (sender.on) { [[NSUserDefaults standardUserDefau ...

  2. Robot Framework--02 菜单栏&工具栏

    转自:http://blog.csdn.net/tulituqi/article/details/7584795 我把RIDE的界面大致分了四个区域:菜单栏.工具栏.案例及资源区.工作区,如下图 菜单 ...

  3. Nginx配置优化的几个参数

    worker_processes 8 一般CPU(i/o)密集型配置为核数相同,网络(i/o)密集型配置为核数倍数(我配置为2倍) worker_cpu_affinity(这个没用过) 仅适用于lin ...

  4. ServiceBase 备份

    using CanDoo.Contracts; using CanDoo.Core.Data; using System; using System.Collections.Generic; usin ...

  5. 【转】常用的shell脚本

    from:http://blog.sina.com.cn/s/blog_4152a9f501013r6c.html 常用的shell脚本 (2012-10-10 22:09:07) 转载▼ 标签: 杂 ...

  6. PHP 5.5 新特性

    文章转自:http://wulijun.github.io/2013/07/17/whats-new-in-php-5-5.html http://www.cnblogs.com/yjf512/p/3 ...

  7. shell学习之路:流程控制(while)

    while循环: 介绍:while循环是不定循环,也称作条件循环.只要条件判断成立,循环就会一直继续执行,直到条件判断不成立,循环才会停止,这就是和for的固定循环不太一样了. while [ 条件判 ...

  8. centos 安装 mysql5.6

    转载自 http://www.cnblogs.com/littlehb/archive/2013/04/02/2995007.html Mysql 5.5以后使用了CMake进行安装,参考与以前的区别 ...

  9. 避免重定向301&302 (Avoid Redirects)

    这个也是Best Practices for Speeding Up Your Web Site的第12条原则: 重定向的意思是,用户的原始请求(例如请求A)被重定向到其他的请求(例如请求B).这是H ...

  10. WP8微信5.3开始内测 支持Cortana语音 两微破冰了?

    WP版微信v5.3内测版昨发布了,进行了一些小幅升级,最意外的是原生支持WP8.1版Cortana语音命令操作.要知道微软的聊天机器人“小冰”在微信上存在不到4天,就被微信全面封杀退出,现在微信又内测 ...