一. 求两个数的最大公约数
1. 暴力相除法
# define _CRT_SECURE_NO_WARNINGS
//计算两个数的最大公约数:
# include<stdio.h>
int main() {
int a = 0, b = 0;
scanf("%d %d", &a, &b);
int c = (a < b) ? a : b;
while (1) {
if (a % c == 0 && b % c == 0)
break;
c--;
}
printf("%d\n", c);
return 0;
}
2. 辗转相除法
# define _CRT_SECURE_NO_WARNINGS
//计算两个数的最大公约数:
# include<stdio.h>
int main() {
int a = 0, b = 0, c = 0, d = 0;
scanf("%d %d", &a, &b);
c = (a < b) ? a : b; //将a和b中的较小值赋值给c
d = (a > b) ? a : b; //将a和b中的较大值赋值给d
while (1) {
if (d % c == 0) {
break;
}
else {
int e = c;
c = d % c;
d = e;
}
}
printf("%d\n", c);
return 0;
}
代码改进:
# define _CRT_SECURE_NO_WARNINGS
//计算两个数的最大公约数:
# include<stdio.h>
int main() {
int a = 0, b = 0, c = 0, d = 0, e = 0;
scanf("%d %d", &a, &b);
c = (a < b) ? a : b; //将a和b中的较小值赋值给c
d = (a > b) ? a : b; //将a和b中的较大值赋值给d
while (e = d % c) {
d = c;
c = e;
}
printf("%d\n", c);
return 0;
}
继续改进:
# define _CRT_SECURE_NO_WARNINGS
//计算两个数的最大公约数:
# include<stdio.h>
int main() {
int a = 0, b = 0, e = 0;
scanf("%d %d", &a, &b);
while (e = a % b) {
a = b;
b = e;
}
printf("%d\n", b);
return 0;
}
a和b两个数的最大公倍数:
a*b/c
c是a和b的最大公约数
二. 求1/1-1/2+1/3-1/4+…+1/99-1/100
# define _CRT_SECURE_NO_WARNINGS
# include<stdio.h>
int main() {
int i = 1, flag = 1;
double num = 0.0;
for (i = 1; i <= 100; i++) {
num = num + flag * (1.0 / i);
flag = -flag;
}
printf("%lf\n", num);
return 0;
}