c++解决素数因子问题:输入一个整数,输出该整数的所有素数因子。例如,输入120,输出为2、2、2、3、5

本文介绍了一种通过编程实现的素数因子分解算法,详细展示了如何使用C++代码来找出任意整数的所有素数因子,并提供了两种不同的实现方法。第一种方法通过判断是否为素数来分解因子,第二种方法则更为简洁,直接进行除法运算。

素数因子的乘积为那个数:2*2*2*3*5=120

注意:素数因子为偶数,则一定是2!

 

#include <iostream>
#include <cmath>
using namespace std;
bool susu(int n)
{
	int f = true;
	for (int i = 2; i < sqrt(n); i++)
	{
		if (n%i == 0)
		{
			f = false;
			break;
		}
	}
	return f;
}

int main()
{
	int n,i;
	cout << "请输入n:";
	cin >> n;
	//n被除尽程序结束
	while (n != 1)
	{
		//如果n是素数的化直接输出
		if (susu(n))
		{
			cout << n << " ";
			break;
		}
		else
		{
			/*每次都从二开始除,因为偶数的素数因子只能是2
			  若不是不是偶数递增寻找适合的技术因子*/
			for (i = 2; i < n; i++)
			{
				if (n%i == 0)
				{
					n = n / i;
					cout << i << " ";
					break;     //注意这里很关键
				}
			}
		}
	}
	return 0;
}

运行结果:

参考文章:https://www.cnblogs.com/clwsec/p/11469863.html

 

方法二:(简化版)上边的break会使i为奇数时也多循环几遍

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
	int n,i=2;
	cout << "请输入n:";
	cin >> n;
	while (i<=n)
	{
		if (n%i == 0)
		{
			n = n / i;
			cout << i << " ";
		}
		
		else i++;

	}
	return 0;
}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值