求取a-b中約數最大數字的約數
阿新 • • 發佈:2019-01-28
環境:VS2015
// 最多約數問題.cpp : 定義控制檯應用程式的入口點。 //質因數分解,最大約數數的約數數量=累乘(不同質因數出現次數+1),如36=2*2*3*3,最大約數9=(2+1)*(2+1) //求a-b之間最大約數數 #include "stdafx.h" #define size 100 int 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; }