题目描述
调用以下函数完成题目:
约数个数函数factor_cnt: 只有一个int型参数, 返回参数的正约数个数.
约数和函数factor_sum: 只有一个int型参数, 返回参数的所有正约数之和.
给出两个正整数a和b, 比较两个数正约数个数的大小, 输出约数个数较多的那个数. 如果约数个数相等, 就再比较约数和, 输出约数和较大的那个数. 如果约数和也相等, 就输出数值较大的数.
注: 即使两个不相等, 它们的约数个数和约数和也可能分别相等. 例如14和15, 都有4个约数, 约数和都是24.
输入格式
1行, 两个正整数a和b, 以空格分隔
输出格式
1行, 按照题目要求, 输出比较结果
输入样例#1
输入#1
5040 1001
输出样例#1
输出#1
5040
输入样例#2
输入#2
14 15
输出样例#2
输出#2
15
说明/提示
1≤a,b≤10^8
a不等于b
代码:#includeusing namespace std; //约数个数函数factor_cnt(x): 返回x的正约数个数. int factor_cnt(int x){ int cnt = 0; for(int i = 1; i * i <= x; ++i){ if(x % i == 0){ if(i * i == x) cnt += 1; else cnt += 2; } } return cnt; } //约数和函数factor_sum(x): 返回x的约数和. int factor_sum(int x){ int cnt = 0; for(int i = 1; i * i <= x; ++i){ if(x % i == 0){ if(i * i == x) cnt += i; else cnt += i + x / i; } } return cnt; } int main(){ int a,b; scanf("%d%d", &a,&b); if(factor_cnt(a) > factor_cnt(b)) printf("%d",a); if(factor_cnt(b) > factor_cnt(a)) printf("%d",b); // if(factor_cnt(a) = factor_cnt(b)) if(factor_cnt(a) == factor_cnt(b)) { if(factor_sum(a) > factor_sum(b)) printf("%d",a); if(factor_sum(b) > factor_sum(a)) printf("%d",b); // if(factor_sum(a) = factor_sum(b)) if(factor_sum(a) == factor_sum(b)) { if(a>b) printf("%d",a); if(a 2、三个数的gcd和lcm 输出三个数的最大公约数,最小公倍数,两者乘积,三数乘积 题目描述 调用以下函数完成题目:
最大公约数gcd: 有两个int型参数, 返回两个参数的最大公约数.
最小公倍数lcm: 有两个int型参数, 返回两个参数的最小公倍数.
给出三个正整数a,b和c, 依次输出三个数的最大公约数(a,b,c)、最小公倍数[a,b,c]、最大公约数(a,b,c)与最小公倍数[a,b,c]的乘积、三个数的乘积abc.
注: 三个数的最大公约数等于前两个数的最大公约数与第三个数的最大公约数, 最小公倍数同理.
输入格式
1行, 三个正整数a,b和c, 以空格分隔
输出格式
1行, 按顺序输出依次输出三个数的最大公约数(a,b,c)、最小公倍数[a,b,c]、最大公约数(a,b,c)与最小公倍数[a,b,c]的乘积、三个数的乘积abc. 用空格分隔.
输入样例#1
输入#1
6 10 15输出样例#1
输出#1
1 30 30 900
说明/提示:1≤a,b≤1000
#include3、判断质数 题目描述using namespace std; //最大公约数gcd(a,b): 返回a和b的最大公约数. int gcd(int a, int b){ while(b != 0){ int t = b; b = a % b; a = t; } return a; } //最小公倍数lcm(a,b): 返回a和b的最小公倍数. int lcm(int a, int b){return a / gcd(a, b) * b;} int main(){ int a,b,c; scanf("%d%d%d", &a, &b, &c); int g=gcd(gcd(a,b),c), l=lcm(lcm(a,b),c); int m=g*l, n=a*b*c; printf("%d ",g); printf("%d ",l); printf("%d ",m); printf("%d ",n); return 0; } 定义一个名为 isPrime 的函数,它有 1 个int 类型参数,返回 bool 类型的值,功能是判断这个参数是不是质数。如果参数是质数则返回 true,否则返回 false。
程序输入一个n,若是质数输出"YES";若不是质数则输出"NO"。
利用函数isPrime完成判断质数的任务
【输入格式】
1 行,一个正整数 nn。
【输出格式】
1 行,对应的输出。
【输入输出样例#1】
输入#1
2输出#1
YES【输入输出样例#2】
输入#2
66输出#2
NO【数据范围】1≤n≤10^9
#includeusing namespace std; //在此定义函数 //int isPrime(int i) bool isPrime(int m) { if(m<2) return false; // for(int i=2;m 4、盖大楼 【题目描述】 我们需要盖一个大楼, 最高层有1个房间,次高层有2个房间,以此类推。
至少共有m个房间, 由于你很吝啬, 所以一旦满足要求就不再盖了。
你需要知道至少要盖多少层。
例如m=9时,需要盖4层。如果用'R'表示房间,示意图如下:
R
RR
RRR
RRRR
输入格式
一个正整数m
输出格式
一个整数n表示需要建造的层数
输入样例#1
输入#1
9
输出样例#1
输出#1
4
说明/提示:1≤m≤10^9
#includeusing namespace std; int main() { int m ,n,room=0; scanf("%d", &m); for( n=0;room 5、数7 【题目描述】 小明他特别喜欢7 这个数, 他会观察每个数中有几个数字7(例如7867 中有2 个7). 他从正整数m开始数(依次数m,m+1,m+2,⋯ 直到数过的数中有至少n个7 为止.
输入两个正整数m,n, 输出他数到的最后一个数.
输入格式
一行两个正整数m,n,以空格隔开
输出格式
一个整数,小明数到的最后一个数
输入样例#1
输入#1
77777 1输出样例#1
输出#1
77777输入样例#2
输入#2
1 20输出样例#2
输出#2
97
说明/提示:1≤m,n≤1000000
#include#include #include using namespace std; int cnt7(int n){ int num=0; while(n>0){ if(n%10==7) num++; n/=10; } return num; } int main(){ int m,n,ans=0,i; scanf("%d %d", &m,&n); for(i=m;ans



