任意输入一个整数m,若m不是素数,则对m进行质因数分解,并以质因数从小到大顺序排列的乘积形式输出

每个合数都可以写成几个质数(也可称为素数)相乘的形式  ,这几个质数就都叫做这个合数的质因数。

#include 
int isPrime(int num)// 判断一个数是否是素数
{
	if (num < 2) {
		return 0;
	}
	for (int i = 2; i * i <= num; i++) {
		if (num % i == 0) {
			return 0;
		}
	}
	return 1;
}
void prime(int num)// 质因数分解并输出乘积形式的质因数
{
	int i;
	int flag = 0;  // 标志位记录是否已经输出了质因数
	int tag = 0;//标志位如果为素数直接跳出
	tag=isPrime(num);
	if (tag == 1)
	{
		printf("%d是素数", num);
		exit(0);
	}
	printf("%d = ", num);
	for (i = 2; i <= num; i++) {
		if (isPrime(i) && num % i == 0) //将每个为质数的i进行求积
		{
			while (num % i == 0) {
				num /= i;
				if (flag) {
					printf(" * ");
				}
				printf("%d", i);
				flag = 1;
			}
		}
	}
	printf("\n");
}
int main() {
	int n;
	printf("请输入一个整数 n:");
	scanf("%d", &n);
	prime(n);
	return 0;
}

你可能感兴趣的:(算法,数据结构,c语言)