1.最大公约数
- 如果 b = 0,计算结束,a 就是最大公约数;
- 否则,计算 a 除以 b 的余数,让 a 等于 b,而 b 等于 那个余数;
- 回到第一步;
#include <cstdio>
int main(){
int a, b;
int t;
scanf("%d%d", &a, &b);
while(b != 0){
t = a % b;
a = b;
b = t;
}
printf("GCD:%d\n", a);
return 0;
}
2.水仙花数 浙大C习题4-6 水仙花数
思路:
录入该三位数之后,分别取 百位数、十位数、个位数,然后判断。
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int n;
scanf("%d", &n);
int bai = n / 100;
int shi = n % 100 / 10;
int ge = n % 10;
if(n == bai*bai*bai + shi*shi*shi + ge*ge*ge){
printf("YES");
}else{
printf("NO");
}
return 0;
}
3.完数
完数的定义:如果一个大于1的正整数的所有因子之和等于它的本身,则称这个数是完数,比如 6,28 都是完数:6=1+2+3;28=1+2+4+7+14。输入一个整数,判断它是否完数。
啊啊啊好坑,我一直理解的是它的 质因子,半天没做出来 o(╥﹏╥)o
思路:
暴力遍历,从1~n遍历,如果可以整除就添加到数组中。或者数组都不用,直接一个sum累加。
#include <cstdio>
int main() {
int n;
scanf("%d", &n);
int sum = 0;
for (int i = 1; i < n; i++) {
if (n % i == 0)
sum += i;
}
if (sum == n)
printf("Yes");
else
printf("No");
return 0;
}