阅读量:0
求两个整数的最大公约数
- 常规方法求最大公约数
#include <stdio.h> int main() { int m = 0; int n = 0; scanf("%d %d", &m, &n); int min = m < n ? m : n; while(m % min != 0 || n % min != 0) { min--; } printf("最大公约数为:%d\n", min); return 0; }
- 辗转相除法求最大公约数
#include <stdio.h> int main() { int m = 0; int n = 0; scanf("%d %d", &m, &n); int set = 0; while (set = m % n) { m = n; n = set; } printf("最大公约数为:%d\n", n); return 0; }
打印 1000 ~ 2000 年之间的闰年
判断闰年的方法:
- 能被 4 整除且不能被 100 整除的是闰年
- 能被 400 整除的是闰年
#include <stdio.h> int main() { int year = 0; for (year = 1000; year <= 2000; year++) { if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { printf("%d 年是闰年\n", year); } } return 0; }
打印 100~200 之间的素数
素数的定义:只能被 1 和它本身整除的数字叫做素数
- 常规方法求素数
#include <stdio.h> int main() { int i = 0; for (i = 101; i <= 200; i+=2) { int j = 0; for (j = i - 1; j >= 2; j--) { if (i % j == 0) { break; } } if (j == 1) { printf("%d ", i); } } return 0; }
- 平方根方法求素数
一个非素数数字 m 可以写成 m = a * b 的形式,那么 a 和 b 中必定至少有一个数字是小于等于 m开平方 的由此可知,我们除数的范围并不需要 2 ~ i-1 这么大,仅仅需要 2 ~ 根号m 即可。
#include <stdio.h> #include <math.h> int main () { int i = 0; for (i = 101; i <= 200; i+=2) { int j = 0; for (j = sqrt (i); j >= 2; j--) { if (i % j == 0) { break; } } if (j == 1) { printf ("%d ", i); } } return 0; }
goto语句
C 语言提供了可以随意滥用的goto语句和标记跳转的标号。
// 关机程序 #include <stdio.h> #include <stdlib.h> int main() { char input[20] = {0}; system("shutdown -s -t 60"); again: printf("你的电脑将在 60 秒后关机,若想取消关机,请输入:取消关机\n"); scanf("%s", input); if (strcmp(input, "取消关机") == 0) { printf("取消关机成功!\n"); system("shutdown -a"); } else { printf("取消关机失败!\n"); goto again; } return 0; }