数学问题——质因子分解

在这里插入图片描述

#include<stdio.h>
#include<math.h>
const int maxn = 100010;

bool isPrime(int n)
{
    
    
   int sqr = (int) sqrt(1.0 * n);
   for(int i = 2; i < sqr; i++)
   {
    
    
   	    if(n % i == 0) return false; 
   }	
   return true;
} 

int prime[maxn], pNum = 0;

void Find_Prime()
{
    
    
	for(int i = 2; i < maxn; i++)
	{
    
    
		if(isPrime(i) == true)
		   prime[pNum++] = i;
	}
}

struct factor{
    
    
	int x, cnt;
}fac[10];

int main()
{
    
    
    Find_Prime();
    int n, num = 0;
    scanf("%d", &n);
    if(n == 1) printf("1=1");
    else{
    
    
    	printf("%d=", n);
    	for(int i = 0; i < pNum && prime[i] <= n; i++)
    	{
    
    
    		if(n % prime[i] == 0)
    		{
    
    
    			fac[num].x = prime[i];
    			fac[num].cnt = 0;
    			while(n % prime[i] == 0)
    			{
    
    
    				fac[num].cnt++;
    				n /= prime[i];
				}
				num++;
			}
		}
	}
	for(int i = 0; i < num; i++)
	{
    
    
		if(i > 0) printf("*");
		printf("%d", fac[i].x);
		if(fac[i].cnt > 1) printf("^%d", fac[i].cnt );
	}
	return 0;
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/tian__si/article/details/113766337