關於n 被整除的問題 演算法實現

2022-08-03 08:00:17 字數 1743 閱讀 9460

傳統的方法:

//輸入:int a, n;

//輸出:int i;

//演算法效果:求最大的i, 使得n!(n的階乘)可以被a^i(a的i次方)整除,而不能被a^(i+1)(a的i+1次方)整除。

#include

<

iostream.h

>

#include

<

string

.h>

double

fac(

intn);

intinline fun1(

inta,

intn);

//int fun2(int a,int n);

void

main()

//階乘計算

double

fac(

intn)

return

re;}

}int

inline fun1(

inta,

intn)

else

}returnp;}

使用質數分解實現(非傳統方法): 

//輸入:int a, n;

//輸出:int i;

//演算法效果:求最大的i, 使得n!(n的階乘)可以被a^i(a的i次方)整除,而不能被a^(i+1)(a的i+1次方)整除。

#include

<

iostream.h

>

#define

size 100

struct

primeitem

;int

*prime_factors(

intn);

//分解質因數

primeitem

*getitemarray(

intn);

//獲取質數item鍊錶

intlocal(primeitem array,

intx);

//元素定位

intmaxj(

int*

prime,primeitem 

*arrayitem);

void

main()

//***************分解質因數***************=

//int

*prime_factors(

intn)

else

break;}

}array[index]=n;

//index++;

array[index]=0

;//設定結束標誌

return

array;

}primeitem

*getitemarray(

intn)

for(i=2

;i<=

n;i++

)elsej++

;}}return

arraylist;

}int

maxj(

int*

prime,primeitem 

*arrayitem)

else}}

if(prime[i]==0

&&i!=0

)else

}return

count;

}int

local(primeitem 

*array,

intx)

return-1

;}

求m可以被n整除的數 深搜剪枝題

給乙個數n,讓你找出乙個只由0,和1組成的十進位制數m,要求這個正整數m可以被n整除.輸入格式 輸入乙個整數n 1 n 200 輸出格式 對於輸入整數n的每乙個值,輸出m的相應值,保證有乙個 數字長度小於19位的數字.如果有乙個給定值n有多個解,其中任何乙個都是可以接受的.題解 乙個cnt記錄位數,...

能被N整除的數字的特徵(數學知識點)

能被1整除的數 好像是所有數都行 能被2整除的數 末位數字是偶數的數 能被3整除的數 各位數字之和能被3整除 能被4整除的數 末尾兩位數字能被4整除 能被5整除的數 末位是0或5的數 能被6整除的數 既能被2整除,又能被3整除 能被7整除的數 方法1 割尾法 適用於數字位數較少 乙個數割去末位數字,...

一連串1組成的數被n整除問題

給出乙個整數n 0 例如 n 3時,111 3 37,則結果為37 輸入有多行 不超過1000行 每行乙個整數n,以eof結束 如果一連串1能被n整除,輸出最小的一連串1被n整除後的結果 否則,輸出 impossible 2 3 7impossible 37 15873 分析 首先考慮幾個特殊的數,...