求取a-b中约数最大数字的约数

来源:互联网 发布:centoa安装java 7u80 编辑:程序博客网 时间:2024/05/21 10:11
环境:VS2015
// 最多约数问题.cpp : 定义控制台应用程序的入口点。//质因数分解,最大约数数的约数数量=累乘(不同质因数出现次数+1),如36=2*2*3*3,最大约数9=(2+1)*(2+1)//求a-b之间最大约数数#include "stdafx.h"#define size 100int m[100];//求取约数int pri(int n);int main(){int a = 0;int  b = 0;int max=0;while (scanf("%d %d",&a,&b)){//预处理,处理负数$$if (a < 0){a = -a;}if (b < 0){b = -b;}if (a > b){int temp = b;b = a;a = temp;}//$$//获取最大约数for (int i = a; i <= b; i++){int newMax = pri(i);if (max < newMax){max = newMax;}}printf("%d", max);max = 0;}//$$    return 0;}//求取约数int pri( int n){int temp = n;int count[size] = {0};for (int i = 2; i <= temp / 2; i++){if (n%i == 0){count[i] ++;n /= i;i--;}}n = 1;for (int i = 0; i <= temp/2; i++){if (count[i] > 0){n *= (count[i] + 1);}}return n;}