首页 > 其他 > 详细

特殊数

时间:2015-09-27 22:48:59      阅读:330      评论:0      收藏:0      [点我收藏+]

一、约瑟夫环

1.数组解法

int _tmain(int argc, _TCHAR* argv[])
{
    int i, j;
    int a[N] = {0}; //表示N号人还在圈中
    int ptr = 0;    //标记当前数到位置的指针
    for (i = 0; i < N; i++)
    {
        for (j = 1; j < M; j++)
        {
            ++ptr %= N;
            while (a[ptr] == 1)
                ++ptr %= N;
        }
        printf("%d\n", ptr%N);
        a[ptr] = 1;
        ++ptr %= N;
        while (a[ptr]==1)
            ++ptr %= N;
    }
    return 0;
}

2.链表解法

 

二、斐波那契数列

1.递归解法

1 typedef unsigned long ulong;
2 
3 ulong Fiblnacci(int n)
4 {
5     if (n <= 2)
6         return 1;
7     return Fiblnacci(n - 1) + Fiblnacci(n - 1);
8 }

2.非递归解法

typedef unsigned long ulong;

ulong Fiblnacci(int n)
{
    ulong f1=1, f2=1, f3;
    int n = 1;
    scanf("%d",&n);
    if (n == 1)
        return f1;
    else if (n == 2)
        return f2;
    else if (n >= 3)
    {
        for (int i = 3; i < n; i++)
        {
            f3 = f1 + f2;
            f1 = f2;
            f2 = f3;
        }
    }
    return f3;
}

三、最大公约数

1.辗转相除

void swap(int&a, int&b)
{
    int c = a;
    a = b;
    b = c;
}
int gcd(int a, int b)
{
    if (a == 0)
        return b;
    if (b == 0)
        return a;
    if (a > b)
        swap(a,b);
    int c;
    for (c = a%b; c > 0; c = a%b)
    {
        a = b;
        b = c;
    }
    return b;
}

四、素数

打印100以内的素数

1.开根号法

 

特殊数

原文:http://www.cnblogs.com/SnailProgramer/p/4842856.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!