C++实现输入任意数,将其拆分成若干个素数的乘积,判断一个数是否可以由两个素数相乘得到,给定一个范围,计算在这个范围内那些数可以是两个素数的乘积

本文介绍如何使用C++实现将任意数拆分为素数乘积,并判断一个数是否能由两个素数相乘得到。在给定范围内,还探讨了如何找出所有能表示为两素数乘积的数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在论坛上面看到这个有意思的题目,花了点时间给他搞了下。`

#include <iostream>
#include <cmath>

using namespace std;
 
bool isPrimenum(long m);
bool isprimeandnum(long num);//判断是否可以两个素数相乘 
 
int main()
{
	long i;
    long num ;
    long j = 1;
    long tmp = num / 2;
    //一个数的最大的约数一定小于它的一半       
   	cin >> num;
	cout << num << " = " ;
	for (i = 2; i <= tmp; i++)
	{
		if (isPrimenum(i) && num % i == 0 )//判断i是否是素数,且要计算的数是否能被i整数 
		{
			if(num % (j * i) == 0)
			{			
				j *= i;
				
				if (num / j != 1)//确定s是否就是要计算的数
				{
					cout << i << " * ";
					tmp = num / j;
					i = 1;
				}                 
				else
				{
					cout << i << endl;
					tmp = num / j;
					i = 1;
				}
			}
		} 
	}
	/*for(i = 2 ;i <= num; i ++)//查看从2到num有哪些数可以是两个素数的乘积
	{
		if(isprimeandnum(i))	cout << " is prime and prime" << endl;
		//else	cout << "is not prime and prime" << endl;
	}*/
	
	cin.get();
	return 0;
}
 
//功能:判断素数
bool
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值