將一個正整數分解質因數.
首先了解質數的定義:指數是指在大於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);
}
}
}
}
總結:先要弄清楚題目的意思,在進行求解。