1. 程式人生 > >演算法提高 8-1因式分解(c語言)

演算法提高 8-1因式分解(c語言)

**問題描述
  設計演算法,使用者輸入合數,程式輸出若個素數的乘積。例如,輸入6,輸出23。輸入20,輸出22*5。**例:
在這裡插入圖片描述
在這裡插入圖片描述
資料規模和約定
  輸入資料中每一個數在int表示範圍內。
 法一:程式程式碼如下

#include<stdio.h>
int isprime(int n)//判斷素數 
{
	int flag=1;
	if(n==2) return 1;
	if(n%2==0||n==1) return 0;//1和偶素不是素數 
	for(int i=3;i<n;i+=2) 
	{
		if(n%i==0){
			flag=0;
			break;
		} 
	}
	return flag;
}
int main()
{
	int n,flag=1;
	scanf("%d",&n);
	if(isprime(n))
	{
		printf("%d",n);
	}
	else
	{
		for(int i=2;i<=n;i++)
		{
			while(n%i==0&&isprime(i))
			{
				if(flag)
				{
					printf("%d",i);
					flag=0;
				}
				else
				{
					printf("*%d",i);
				}
				n/=i;	
			}	
		}	
	}
	return 0;
}

法二:程式程式碼如下

#include<stdio.h> 
int main()
{
    int n,x = 1,flag = 1;
    scanf("%d",&n);
    while(n != 1)
    {
        x++;
        while(n % x == 0)
        {
            if(flag)
            {
                flag =0;
                printf("%d",x);
            }
            else
            {
                printf("*%d",x);
            }
            n /= x;
        }
    }
    return 0;
}