若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。


  • 运维

  • 前端

  • 编程

  • 随笔

  • hust-oj

1703: 最多约数问题

发表于 2017-10-06   |   分类于 HUSTOJ   |   阅读次数 1,035

题目描述

正整数x 的约数是能整除x 的正整数。正整数x的约数个数记为div(x)。例如,1,2,5,10 都是正整数10的约数,且div(10)=4。设a 和b是2 个正整数,a≤b,找出a 和b之间约数个数最多的数x。对于给定的2 个正整数a≤b,计算a 和b之间约数个数最多的数。

输入

输入数据的第1行有2个正整数a和 b,a≤1000000000,b≤1000000000。

输出

若找到的a 和b之间约数个数最多的数是x,将div(x)输出。

样例输入

1 36

样例输出

9

参考代码

#include<stdio.h>  
int main() 
{
    int a,b;
    //输入的a和b  
    int num,maxnum=2;
    //maxnum表示x约数的个数,num表示计算过程中某个是的约数个数   
    int i,j;
    scanf("%d%d",&a,&b);
    //input a and b  
    for (i=b;i>=a;i--) 
    {
        //从大到小遍历   
        if(i%2==0) 
        {
            //约数最多的一定是偶数   
            num=2;
            //1和i是固有的约数,所以num起始值为2   
            for (j=2;j<=i/2;j++) 
            {
                //j代表一个约数   
                if(i%j==0) 
                {
                    if(j==i/j) 
                    {
                        //例如 36=6*6的情况   
                        num++;
                    } else if(j<i/j) 
                    {
                        num+=2;
                    } else 
                    {
                        break;
                    }
                }
            }
            if(num>maxnum)  
                            maxnum=num;
        }
    }
    printf("%d",maxnum);
    return 0;
}

解析

暂无

hustoj

发表评论 取消回复

电子邮件地址不会被公开。 必填项已用*标注

*
*


hoxis wechat
著作权归作者所有
站点更新说明
  • 文章目录
  • 站点概览
若是凉夜已成梦

若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。

1904 日志
6 分类
12 标签
RSS
weibo github twitter facebook

友情链接

Skip 原站点 Dreams孤独患者
© 2017 若是凉夜已成梦
Powered by WordPress | 已运行
Theme By NexT.Mist