首页 > 试题广场 >

输入一个正整数,输出该正整数分解质因数的形式

[问答题]

一个正整数用几个质数相乘的形式表示出来,叫做分解质因数。编写程序,输入一个正整数,输出该正整数分解质因数的形式。例如,输入90,输出90=2*3*3*5。

#include <stdio.h>
//判断是否是质数
bool isPrimer(int num)
{
    for(int i = 2;i < num;++i)
    {
         if(num%2 == 0)
             return false;
    }
    return true;
}

int main()
{    
    int num;
    scanf("%d",&num);
    if(isPrimer(num))
    {
        printf("%d是质数\n",num);
    }
    for(int i = 2;i <= num;)
    {    
        //i是num的因子
        if(num%i == 0)
        {    
            //判断i是否是质数    
            if(isPrimer(i))
            {
                printf("%d ",i);
                num = num/i;
                i = 2;
            }
        }else{
            +++i;//继续找因子
        }
    }
    return 0;
}
编辑于 2018-10-19 09:17:37 回复(0)
这题不用额外判断因子是不是质数。
i 每次从2开始递增,假设n=27能被3和9整除,每次当 i 增加到3时就跳出循环了,根本轮不到9出现,所以每一次跳出的都是质数。
#include<stdio.h>
int main(){
	int n,i;
	scanf("%d",&n);
	printf("%d=",n);
	while(n!=1){
		i=2;
		while(1){
			if(n%i==0){   //////i是因子
				printf("%d",i);
				n/=i;
				break;
			}
			i++;    ///i不是因子,自增后继续循环判断
		}
		if(n!=1)       ////如果n还能被分解,则输出*号
			printf("*");
	}
	return 0;
}

编辑于 2020-04-04 17:55:17 回复(0)