演算法 數的計算 最大公約數和最小公倍數問題

2021-07-27 02:37:21 字數 1484 閱讀 7978

數的計算:

題目描述 description

我們要求找出具有下列性質數的個數(包含輸入的自然數n):

先輸入乙個自然數n(n<=1000),然後對此自然數按照如下方法進行處理:

1.          不作任何處理;

2.          在它的左邊加上乙個自然數,但該自然數不能超過原數的一半;

3.          加上數後,繼續按此規則進行處理,直到不能再加自然數為止.

輸入描述 input description

乙個數n

輸出描述 output description

滿足條件的數的個數

樣例輸入 sample input 6

樣例輸出 sample output 6

資料範圍及提示 data size & hint

6個數分別是:616

26126

36136

本題由資料易知可歸於數論!先做分析:

n=6:6,16 ,26,126,36,136n=7:7,17,27,127,37,137n=8:18,28,128,38,138,48,148,248,1248.

則易知在數n左方可填數<=n/2,所以相鄰兩個數具有該性質的數的個數相同又可以知道6左方可填1,2,3,而1不能再拆,2左方能填1,而3左方可填1。又因為對於乙個數對2取整可以為1或0.由資料分析可令f(1)=f(0)=1;所以有f(n)=f(0)+f(1)+..+f(n/2)

#includeint f(int n);

int main()

int f(int n)

最大公約數與最小公倍數問題

題目描述 description

輸入二個正整數x0,y0(2<=x0<100000,2<=y0<=1000000),求出滿足下列條件的p,q的個數

條件:  1.p,q是正整數

2.要求p,q以x0為最大公約數,以y0為最小公倍數.

試求:滿足條件的所有可能的兩個正整數的個數.

輸入描述 input description

二個正整數x0,y0

輸出描述 output description

滿足條件的所有可能的兩個正整數的個數

樣例輸入 sample input

3 60

樣例輸出 sample output

4

本題沒有難度在列舉計算時可以用最小公倍數=(a*b)/最大公因數簡化

#include#includeint en(int a,int n);

int lcm(int a,int b);

int main()

int en(int a,int n)

return sum;

}int lcm(int a,int b)

最大公約數簡便演算法 最大公約數演算法

1 查詢約數法 先分別找出每個數的所有約數,再從兩個數的約數中找出公有的約數,其中最大的乙個就是 最大公約數 例如,求 12 和 30 的最大公約數 12 的約數有 1 2 3 4 6 12 30 的約數有 1 2 3 5 6 10 15 30 12 和 30 的公約數有 1 2 3 6,其中 6 ...

計算最大公約數和最小公倍數

最大公因數 也稱最大公約數 最大公因子,指兩個或多個整數共有約數中最大的乙個 a,b的最大公約數記為 a,b 12,18的最大公約數是 12,18 6 計算方法 a factor 0 and b factor 0 得到 a,b factor 最小公倍數 兩個或多個整數公有的倍數叫做它們的公倍數,其中...

最大公約數 最小公倍數 演算法

兩個整數的最大公約數是能夠同時整除它們的最大的正整數。輾轉相減法基於如下原理 兩個整數的最大公約數等於其中較小的數和兩數的差的最大公約數。例如,252和105的最大公約數是21 252 21 12 105 21 5 因為252 105 147,所以147和105的最大公約數也是21。在這個過程中,較...