將一個正整數分解質因數。例如:輸入90,打印出90=2*3*3*5。C語言

將一個正整數分解質因數.

首先了解質數的定義:指數是指在大於1的自然數中,除了1和它本身以外的不再有其他的因數的自然數.
再者需要知道什麼是因數,因數是指:整數a除以整數b(b!=0)d的商正好是整數而沒有餘數,我們就說b是a的因數.

判斷素數的代碼段:

int isPrimeNumber(int num)
{
	int i = 0;
	for(i = 2;i < num;i++)
	{
		if(num % i == 0)
		{
			break;
		}
	}
	if(i == num)
	{
		return 1;
	}
	else
	{
		return 0;
	}
}

解題的思路:

  • 先求解輸入數的因數 ,再判斷這個因數是否是質數。如果是質數,在按照設計要求進行求解。

整體的代碼:

int isPrimeNumber(int num)
{
	int i = 0;
	for(i = 2;i < num;i++)
	{
		if(num % i == 0)
		{
			break;
		}
	}
	if(i == num)
	{
		return 1;
	}
	else
	{
		return 0;
	}
}

int main()
{
	int number = 0;
	printf("input a number:");
	scanf("%d",&number);

	int i = 0;
	int tmp = number;
	printf("%d = ",number);
	for(i = 1;i<=number;i++)
	{
		if(number % i == 0)
		{
			if(isPrimeNumber(i))
			{
				do
				{
					if(tmp % i ==0)
					{
						printf("%d",i);
					}
					tmp = tmp / i;
					if(tmp != 1)
					{
						printf("*");
					}

				}while(tmp % i == 0);
			}
		}
	}
}

總結:先要弄清楚題目的意思,在進行求解。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章