最多约数问题。正整数 x 的约数是能整除x的正整数,其约数的个数记为div(x),例如div(10)=4。设 a 和 b 是两个正整数,找出 a 和 b 之间约数个数最多的数 x 的约数个数。 样例
2016-09-04 17:22
501 查看
之前理解错啦,我以为是两个数之间比较呢!!
好吧下面的是两个数之间的比较:
#include <stdio.h> #include <math.h> int main() { int a, b; int numa = 0, numb = 0, num; printf( "输入两个数(中间用空格隔开):" ); scanf( "%d %d", &a, &b ); for ( int i = 1; i <= sqrt( a ); i++ ) { if ( a % i == 0 ) { numa++; } } for ( int i = 1; i <= sqrt( b ); i++ ) { if ( b % i == 0 ) { numb++; } } if ( b % 2 == 0 ) { numb = (numb - 1) * 2 + 1; }else numb = numb * 2; if ( a % 2 == 0 ) { numa = (numa - 1) * 2 + 1; }else numa = numa * 2; num = (numa > numb) ? numa : numb; printf( "%d\n", num ); return(0); }下面的是真正符合题意得:
如有问题大家提出来交流一下哈
#include <stdio.h> #include <math.h> #define max 100 int main() { int a, b; int big, small, flag; int count[max] = { 0 }; printf( "输入两个数(中间用空格隔开):" ); scanf( "%d %d", &a, &b ); big = (a > b ? a : b); small = (a < b ? a : b); for ( flag = small; flag <= big; flag++ ) { for ( int i = 1; i <= sqrt( flag ); i++ ) if ( flag % i == 0 ) { count[flag]++; } } for ( flag = small; flag <= big; flag++ ) if ( flag % 2 == 0 ) { count[flag] = (count[flag] - 1) * 2 + 1; }else count[flag] = count[flag] * 2; for ( flag = small; flag < big; flag++ ) if ( count[flag] > count[flag + 1] ) { int swap = count[flag]; count[flag] = count[flag + 1]; count[flag + 1] = swap; } printf( "%d", count[flag] ); return(0); }
相关文章推荐
- 设a和b是两个正整数,a<=b,计算a和b之间约数个数最多的整数
- 查找程序中的错误(平凡的程序,不平凡的问题) 4.不定义第三个变量,互换两个变量的值 5.char 类型转换 6.输出 10~100 之间的随机整数
- 找出10~40之间不能被2和3整除的整数。
- 问题描述 已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。 输入格式 输入一个正整数N。 输出格式 输出一个整数,表示你找到的最小公倍数。 样例输入 9 样例输出 5
- 给定一个整数N,那么N的阶乘N!末尾有多少个0呢?例如:N=10,N!=3 628 800,N!的末尾有两个0。
- 对于任意正整数都可以找出至少一串连续奇数,它们的和等于该整数的立方。以下程序验证[2,20]之间的数满足这一性质
- 有N个Int32范围内的正整数,找出N个数两两之间最大公约数的最大值。例如:N = 4,4个数为:9 15 25 16,两两之间最大公约数的最大值是15同25的最大公约数5。
- 网易面试题之小易是一个数论爱好者,并且对于一个数的奇数约数十分感兴趣。一天小易遇到这样一个问题: 定义函数f(x)为x最大的奇数约数,x为正整数。 例如:f(44) = 11. 现在给出一个N,需要求
- 对于任意正整数都可以找出至少一串连续奇数,它们的和等于该整数的立方。以下程序验证[2,20]之间的数满足这一性质。
- 网易面试题之小易是一个数论爱好者,并且对于一个数的奇数约数十分感兴趣。一天小易遇到这样一个问题: 定义函数f(x)为x最大的奇数约数,x为正整数。 例如:f(44) = 11. 现在给出一个N,需要求
- 给定一个整数N,那么N的阶乘N!末尾有多少个0呢?例如:N=10,N!=3 628 800,N!的末尾有两个0。
- 数论 - 整除问题 --- 整数集合中找出3的最大倍数
- 输入一个整数,求该整数的二进制表达中有多少个1。例如输入10,由于其二进制表示为1010,有两个1,因此输出2。
- 给定一个整数N,那么N的阶乘N!末尾有多少个0呢?例如:N=10,N!=3628800,N!的末尾有两个0。
- 关于两个div之间的缝隙的问题
- 28.整数的二进制表示中1的个数 题目:输入一个整数,求该整数的二进制表达中有多少个1。 例如输入10,由于其二进制表示为1010,有两个1,因此输出2。
- 两个div之间的缝隙问题
- 两个并排的div之间有间隔问题
- 对于任意正整数都可以找出至少一串连续奇数,它们的和等于该整数的立方。以下程序验证[2,20]之间的数满足这一性质。
- 数论 - 整除问题 --- 整数集合中找出3的最大倍数