算法提高 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;
}

猜你喜欢

转载自blog.csdn.net/qq_42552533/article/details/85935657