文档章节

几个简单的算法

mskk
 mskk
发布于 2017/04/13 22:31
字数 313
阅读 12
收藏 0
#include <stdio.h>
#include <math.h>

/*
 *约瑟夫环解法
 */
unsigned joseph(unsigned begin, unsigned end, unsigned step)
{
    unsigned loop = 0;
    unsigned last = 0xFFFFFFFF;
    if (begin >= end)
    {
        return 0xFFFFFFFF;
    }
    
    for (loop = begin + 1; loop <= end; loop++)
    {
        last = (last + step) % loop;
    }
    
    return last;
}

/*
 *求最大公约数数,假定a > b
 */
unsigned gcd(unsigned a, unsigned b)
{
    unsigned c = 0;
    while (b != 0)
    {   
        c = b;
        b = a % b;
        a = c;
    }
    return a;
}

/*
 * 求100以内的素数的个数
 */

unsigned prime(unsigned n)
{
    unsigned count = 0;
    unsigned loop = 0;
    unsigned i = 0;
    bool flag = false;
    for (loop = 2; loop < n; loop++)
    {
        flag = false;
        
        if (loop == 2 || loop == 3 || loop == 5 || loop == 7)count++;
        
        if (loop % 2 == 0 || loop % 3 == 0 || loop %5 == 0 || loop % 7 == 0)continue;
        
        for (i = 2; i <= sqrt(loop); i++)
        {
            if (loop % i == 0){flag == true; break;}
        }
        if (true != flag)count++;
    }
    
    return count;
}

/*
 * 求一个无符号整数中1的个数
 */

unsigned calc_1_bit_num(unsigned n)
{
    unsigned count = 0;
    
    while(n)
    {
        n &= n-1;
        count++;
    }
    
    return count;
}

/*
 * 交换两个整数的值
 */
void exchange(unsigned *lhs, unsigned *rhs)
{
    *lhs = *lhs ^ *rhs;
    *rhs = *lhs ^ *rhs;
    *lhs = *lhs ^ *rhs;
}

int main(int argc, char**argv) {
    // Prints hello message...
    printf("josph problem:\n");
    printf("begin:1,end:5,step:3-->%u\n", joseph(1, 5,2));
    printf("begin:2,end:6,step:3-->%u\n",joseph(2,6,2));
    
    printf("gcd:%u", gcd(8,7));
    
    printf("prime:%u",prime(100));
    
    unsigned a = 10;
    unsigned b = 11;
    exchange(&a, &b);
    printf("a:%u, b:%u",a, b);
    return 0;
}

 

© 著作权归作者所有

mskk
粉丝 3
博文 178
码字总数 6713
作品 0
昆山
程序员
私信 提问
加载中

评论(2)

mskk
mskk 博主
http://blog.csdn.net/chlele0105/article/details/38739919
mskk
mskk 博主
http://blog.csdn.net/dszgf5717/article/details/23034099
2018软件设计师中级下午答题解题策略~

  最近在琢磨软件设计师的下午题目,一开始发现看见流程图,逻辑困难的比较难受。因为流程图怎么说呢,是没学过吧!   总结流程图的几个解体方法,首先看到一大堆的文字不要想着你就能很...

RunWsh
2018/11/02
0
0
Win32游戏制作之---五子棋的简单设计

想必每个人都玩过五子棋,其实对于我而言,五子棋是小时候玩的最多的棋类游戏,当然小时候也爱玩象棋以及国际象棋之类的,不过由于五子棋比较简单,所以就先实现一个简单的人机五子棋。最近我...

loving_forever_
2016/07/17
0
0
几个常用算法及反射+多线程调用

  第一次在博客园写东西,最近在重温算法,在这里记录一下,以便以后查阅及修改。 首先是优化冒泡排序 } } #endregion View Code 其次是计数排序 View Code 快速排序,这里用到了递归 publ...

cl789456
08/01
0
0
sbc(四)应用限流

pexels-photo-306198.jpeg 前言 在一个高并发系统中对流量的把控是非常重要的,当巨大的流量直接请求到我们的服务器上没多久就可能造成接口不可用,不处理的话甚至会造成整个应用不可用。 比...

crossoverJie
2017/08/11
0
0
设计模式在vue中的应用(三)

策略模式应该是我们接触比较多的几个设计模式中的一个了,先看一下定义: (来自百度百科) 定义了一组算法(业务规则); 封装了每个算法; 这族的算法可互换代替(interchangeable) 一、场...

hailx
01/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

oracle ORA-39700: database must be opened with UPGRADE option

ORA-01092: ORACLE instance terminated. Disconnection forced ORA-00704: bootstrap process failure ORA-39700: database must be opened with UPGRADE option 进程 ID: 3650 会话 ID: 29......

Tank_shu
今天
2
0
分布式协调服务zookeeper

ps.本文为《从Paxos到Zookeeper 分布式一致性原理与实践》笔记之一 ZooKeeper ZooKeeper曾是Apache Hadoop的一个子项目,是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它...

ls_cherish
今天
4
0
聊聊DubboDefaultPropertiesEnvironmentPostProcessor

序 本文主要研究一下DubboDefaultPropertiesEnvironmentPostProcessor DubboDefaultPropertiesEnvironmentPostProcessor dubbo-spring-boot-project-2.7.3/dubbo-spring-boot-compatible/au......

go4it
昨天
2
0
redis 学习2

网站 启动 服务端 启动redis 服务端 在redis 安装目录下 src 里面 ./redis-server & 可以指定 配置文件或者端口 客户端 在 redis 的安装目录里面的 src 里面 ./redis-cli 可以指定 指定 连接...

之渊
昨天
2
0
Spring boot 静态资源访问

0. 两个配置 spring.mvc.static-path-patternspring.resources.static-locations 1. application中需要先行的两个配置项 1.1 spring.mvc.static-path-pattern 这个配置项是告诉springboo......

moon888
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部