POJ 2749 分解因數

Description

給出一個正整數a,要求分解成若干個正整數的乘積,即a = a1 * a2 * a3 * ... * an,並且1 < a1 <= a2 <= a3 <= ... <= an,問這樣的分解的種數有多少。注意到a = a也是一種分解。

Input

第1行是測試數據的組數n,後面跟着n行輸入。每組測試數據佔1行,包括一個正整數a (1 < a < 32768)

Output

n行,每行輸出對應一個輸入。輸出應是一個正整數,指明滿足要求的分解的種數

Sample Input

2
2
20

Sample Output

1
4

這題最主要的就是在自定義函數裏捋清楚在什麼條件下可以繼續進行循環遞歸操作,在什麼情況下跳出循環即可。另外就是在設計自定義函數是要第一時間整明白,一個形參是行不通的,因爲後面的數得大於前面的數,所以前面的數也要傳,同時還要傳要分解的數才ok

#include<stdio.h>
int count;
void  fun(int a,int n)
{
	int i=n,j;
	for(i=a;i<n;i++)
	{
		if(n%i==0 && i<=n/i)
		{
			count++;
			fun(i,n/i);          //傳值的數應該》=i
		}
		if(i>n/i)	break;
	}
}
int main()
{
	int n,m,i;
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%d",&m);
		count=1;
		fun(2,m);
		printf("%d\n",count);
	}
return 0;
}

發佈了34 篇原創文章 · 獲贊 17 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章