最多约数问题
来源:互联网 发布:淘宝开通花呗要求什么 编辑:程序博客网 时间:2024/06/05 04:36
问题描述:正整数x的约数是能整除x的正整数。正整数x的约数个数记为div(x)。例如,10有4个约数:1、2、5、10。设a和b是两个正整数,试计算a和b之间约数个数最多的数x。
算法设计:对于给定的2个正整数a≤b,编程计算a 和 b 之间约数个数最多的数。
数据输入:输入数据由文件名为input.txt的文本文件提供。文件的第1 行有2 个正整数 a和 b。
结果输出: 若找到的a和b之间约数个数最多的数是x,则将div(x)输出到文件output.txt。
问题分析:任何一个数都能分解成几个素数乘积的形式,例如6的约数有1,2,3,6,且6分解成素数相乘6=2*3,在比如36的约数有1,2,3,4,6,9,12,18,36,且36分解成素数相乘36=2*2*3*3=2^2*3^2,通过规律我们可以发现一个数约数的个数等于它分解成素数相乘后各素数指数加一的乘积,像36约数个数就直接可以以(2+1)*(2+1)=9个来计算。
#include<stdio.h>#include<math.h>
int prime(int n){for(int i=2;i<n;i++)if(n%i==0)return 0;return 1;}int main(){int a,b;int result,maxvalue=-9999;int temp,count;scanf("%d%d",&a,&b);for(int i=a;i<=b;i++){temp=i;result=1;for(int j=2;j<i;j++){if(prime(j)){count=0;while(temp%j==0){count++;temp/=j;}result*=count+1;}} if(result>maxvalue)maxvalue=result;}printf("%d\n",maxvalue);return 0;}
阅读全文
0 0
- 最多约数问题
- 最多约数问题
- 最多约数问题
- 最多约数问题
- 【最多约数问题】
- 问题八十六:最多约数
- 最多约数问题
- 最多约数问题
- 【最多约数问题】
- 最多约数问题
- 最多约数问题
- NOJ1203 最多约数问题
- 最多约数问题
- 最多约数问题
- 最多约数问题
- 最多约数问题
- 最多约数问题
- 最多约数问题
- 内连接、左外连接、右外连接、交叉连接及其区别
- IOS AppStore内付费教程
- 开发中使用过的工具类链接
- oracle练习4
- ShaderLab 法线贴图(凹凸材质)
- 最多约数问题
- 在路上- 一年回望
- Oracle 数据类型
- 解读The Python Tutorial(二)
- HTTP协议
- 使用存储过程备份与还原数据库
- 运营商级NAT引起的FTP匿名下载文件中断问题
- mysql启动和关闭外键约束的方法(FOREIGN_KEY_CHECKS)
- 1至9任意插入加减号值为100的组合