一、约瑟夫环
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