正整數分解

2021-10-25 15:08:06 字數 1154 閱讀 4982

程式整體思路

:分解就是乙個數減1,這個數後面的數加1

一次分解之後

找到最後乙個比1大的元素座標,然後與上一次相比,如果座標發生了偏移,那麼會發生向後偏移,說明又開始有乙個數需要分解,這個時候需要增加乙個元素,該情況下其實就是新出現了2;此時這個座標是2所在的位置

將2分解完畢之後,再繼續找比1大的元素座標那麼這個座標應該向前偏移(2已經沒有了,應該是2前面的數)。如果繼續分解下去那麼應該回到向後偏移之前的樣子,所以此處需要復原函式,復原之後不找座標了,而是直接將原m位置元素分解,然後繼續重複之前的步驟。

此處輸出部分值得注意,如果符合遞增排序就可以輸出(但同時還要控制,復原之後不能輸出,並且還要注意復原之後不找座標),如果不符合遞增就繼續分解。

**如下

#include

void

print

(int a,

int j,

int n)

printf

("\n");

}int

zhao

(int a,

int j)

return i;

}int

zeng

(int a,

int n)

}return flag;

}void

huanyuan

(int a,

int m,

int j)

a[m+1]

=sum;

}int

main

(void

),n,m=

0,u=

0,j,flag=1;

scanf

("%d"

,&n)

; a[0]

=n-1

;a[1]=

1;j=2;

print

(a,j,n)

;while

(a[0]!=

0)else

if(m>u)

else

if(mzeng

(a,j)

&&flag!=0)

print

(a,j,n);}

return0;

}

以上為個人觀點,若有不當請指正

正整數分解演算法

問題 將以正整數n表示成一系列正整數之和.n n1 n2 n3 nk n1 n2 n3 nk 1,k 1 這就是正整數n的乙個劃分,正整數n不同的劃分個數稱為正整數n的劃分數,記作p n 例如 6 有如下11種劃分則p 6 116 5 1 4 2,4 1 1 3 3,3 2 1,3 1 1 1 2 ...

程式4 正整數分解質因數

題目 將乙個正整數分解質因數。例如 輸入90,列印出90 2 3 3 5。程式分析 對n進行分解質因數,應先找到乙個最小的質數k,然後按下述步驟完成 1 如果這個質數恰等於n,則說明分解質因數的過程已經結束,列印出即可。2 如果n k,但n能被k整除,則應列印出k的值,並用n除以k的商,作為新的正整...

將整數分解為連續正整數之和

將乙個整數 n 分解為連續正整數之和,如 15 可以分解為 15 1 2 3 4 5 15 4 5 6 15 7 8 計算從 i 開始連續 k 個數之和 sum k 2 i k 1 2 當 sum n 時,有 k k 2 i 1 k 2 n 0 變形為 i 2 n k k 1 2。在 2,2 n k...