問題12 求因子個數超過500個的第乙個三角數

2021-09-12 03:20:13 字數 1454 閱讀 8398

問題描述如下:

「三角數為符合如下標準:

第7個數為1+2+3+4+...+7=28,前幾個三角數為:1,,3,6,10,15,21,28......

讓我們來看一下他們的因子:

1:13:1,3

6:1,2,3,6

10:1,2,5,10

15:1,3,5,15

21:1,3,7,21

28:1,2,4,7,14,28

因子個數超過5的第乙個三角數為28,求因子個數超過500個的第乙個三角數?」

**實現如下:

/**

* 獲得n的因子的個數

* * @param n

* @return

*/private static int getfactornumber(int ********number)

} return result;

} /**

* 獲得因子個數超過n個的三角數 此數符合某個標準如下: 如第7個數為1+2+3+4+5+6+7=28,

* 前幾個數為1,3,6,10,15,21,28,36...

* t(n)=n(n+1)/2

* @param n

* @return

*/private static int get********number(int n)

return ********number;

}

執行以上程式,要很長時間才能夠得到結果76576500。

進行一些優化,

/**

* 獲得n的因子的個數

* * @param n

* @return

*/private static int getfactornumber1(int ********number)

if (i * i == ********number)

} return result;

}

還有一些其他的方式來做,可以做乙個提示,

1=2^0+3^0+5^0+7^0...+p^0,因子個數為(0+1)*(0+1)*(0+1)...*(0+1)=1

3= 2^0+3^1+5^0+7^0...+p^0,因子個數為(0+1)*(1+1)*(0+1)...*(0+1)=2

6=2^1+3^1+5^0+7^0...+p^0,因子個數為(1+1)*(1+1)*(0+1)...*(0+1)=4

28 = 2^2+3^0+5^0+7^1...+p^0,因子個數為(2+1)*(0+1)*(0+1)*(1+1)...*(0+1)=6

t(n) = 2^a1+3^a2+4^a3+...+p^ap,因子個數為(a1+1)*(a2+1)*(a3+1)*(a4+1)...*(ap+1)=n

到此結束。

請不吝賜教。

@anthor clumsybirdz

求整數的因子個數,因子之和,尤拉計畫12

求乙個數的因子個數,公式 別人的部落格 include include include include include include includeusing namespace std const int m 10000005 1e7的陣列 int pr 5000005 k 0 bool vis...

求乙個正整數的因子個數

如 整數 15,有1,15,3,5 共4個因子。要求演算法的複雜度為o sqrt n 首先想到的方法是 逐個列舉,從 1 到 n 2 1 當然也可以是 從 1 到 n 這樣演算法的複雜到至少是o n 的,而且,其中還要去重,比如 24 4 6 6 4,這樣還要分配空間來存放找到的因子,並且每次新增的...

數學演算法 求乙個數的質因子

兩種方法,第一種是將所有的素數篩選出來,第二種直接迴圈就行了 第二種更加的高效 第一種方法其實就是先將素數篩選出來然後再計算,第二種是直接計算。第一種的 includeusing namespace std const int max 1e7 7 bool prim max vector ve 素數...