演算法課 最多約數問題

2022-06-20 00:00:17 字數 1340 閱讀 5846

題目描述

正整數 x 的約數是能整除x的正整數,其約數的個數記為div(x),例如div(10)=4。設 a 和 b 是兩個正整數,找出 a 和 b 之間(包含a,b)約數個數最多的數 x 的約數個數

輸入兩個正整數a和b,(1<=a<=b<=1e5)

輸出乙個正整數表示答案。

樣例輸入

1 36
樣例輸出
9
【方法1】線性篩

1/*2

test1 : 線性篩的做法3*/

4 #include5 #include6 #include7

using

namespace

std;

8 typedef long

long

ll;9

const

int n = 1e6+10;10

11int

prime[n],cnt[n];

12bool

is_prime[n];

13int a,b,ans=2;14

15int count_prime ( int x , int

p )21

return

tot ;22}

2324

void

is_prime()36}

37}38}

39}40int

main()

4148

*/49

if( a == b && a == 1 ) ans = 1

;50 printf("

%d\n

",ans);

51return0;

52 }

view code

【方法2】搜尋

1 #include2

using

namespace

std;

3const

int n = 1e5+10;4

int prime = ;

7int

a , b ;

8int ans = 2;9

10int dfs( int num , int pos ,int k , int

cnt )

19if( a <= num && num <=b )

2223

return

res;24}

2526

intmain()

27else

34 printf("

%d\n

",ans);

35return0;

36 }

view code

最多約數問題

問題描述 正整數x的約數是能整除x的正整數。正整數x的約數個數記為div x 例如,10有4個約數 1 2 5 10。設a和b是兩個正整數,試計算a和b之間約數個數最多的數x。演算法設計 對於給定的2個正整數a b,程式設計計算a 和 b 之間約數個數最多的數。資料輸入 輸入資料由檔名為input....

最多約數問題

問題描述 正整數x的約數是能整除x的正整數。設a和b是兩個正整數,a b,找出a和b之間約數個數最多的數x。輸入輸出樣例 input 1 36 output 9還是列舉求a,b之間每個數的約數個數,算約數個數採用分解質因數的方法。質數p1 p2 p3 pn,正整數a分解質因數的結果是 a p1 m1...

最多約數問題

題目分析 正整數 x的約數是能整除x的正整數,其約數的個數記為div x 例如div 10 4。設 a 和 b 是兩個正整數,找出 a 和 b 之間約數個數最多的數 x的約數個數。1 暴力法 依次記錄區間範圍內每乙個數的約束個數,取最大值 int prime int a,int b 2 質因子分解 ...