[编程练习] 整数的质数公约数 C语言

#include <stdio.h>

int DivisorNum (int n);
int PrimeNum (int n);
int Prime1 (int n);
void PrimeExpressionOf (int n);

void main ()
{
	int n;
	printf ("Please input a integer number x (x>=2):");
	scanf ("%d", &n);
	if (2>n)
		return;
	printf ("它有 %d个公约数\n", DivisorNum(n));
	printf ("它有 %d个质数公约数\n", PrimeNum(n));
	printf ("第一个质数公约数是: %d\n", Prime1(n));
	printf ("%d的质数计算式是:\n", n);
	PrimeExpressionOf (n);
	putchar (10);
}

int DivisorNum (int n)// return the number of N's divisors
{
	int num = 0, i;
	for (i=1; i<=n; i++)
	{
		if (0 == n%i)
			num++;
	}	
	return num;

}

int PrimeNum (int n)// return the number of N's prime divisors
{
	int num = 0, i;
	for (i=1; i<=n; i++)
	{
		if ( (0 == n%i) && (2 == DivisorNum(i)) )
			num++;
	}
	return num;
	
}

int Prime1 (int n)// return  N's first prime divisor
{
	int num = 0, i;
	for (i=1; i<=n; i++)
		if ( (0 == n%i) && (2 == DivisorNum(i)) )
		{
			num++;
			if (1 == num)
				return i;
		}
}

void PrimeExpressionOf (int n)// return all the number of N's prime divisors
{
	int x;

	x = Prime1 (n);
	printf ("%d\t", x);
	if (n != x)
	{
		n /= x;
		PrimeExpressionOf (n);
	}
}

猜你喜欢

转载自blog.csdn.net/cp_oldy/article/details/88290654