【质数乘积且包含回文快速近积数】2021-11-22

这篇博客探讨了使用longlong数据类型进行快速近似开平方的方法,并展示了如何找到两个质数的乘积等于给定数值的算法。示例中展示了从1到10^10的数及其平方根的快速计算,以及如何应用快速近似方法解决7140229933这个数的质因数分解问题。
摘要由CSDN通过智能技术生成

缘由https://bbs.csdn.net/topics/603462686    类似https://blog.csdn.net/xianfajushi/article/details/115666759

long long 快速近积数(long long 数)
{
	long long m = 1, j = 数;
	while (j > m)m *= 10, j /= 10;
	if (!j)j = m;
	while (m /= 2)
	{
		while (j * j > 数)j -= m;
		while (j * j < 数)j += m;
	}
	return (j * j > 数 ? --j : j);
}



	long long a = 1;
	while (a <= 10000000000)
		cout << a << "=" << 快速近积数(a) << "\t", a += a;
可用于开平方,小数4位要加双倍的0,如7开平方
	long long a = 700000000; std::cout << (a = 快速近积数(a)) << "\t" << a*a << std::endl;

void 质数乘积()
{//缘由https://bbs.csdn.net/topics/603462686
	long long a = 7140229933, z = 1, s = a / z;
	while ((z += 2) <= (s = a / z))
	if (质数判断(z) && 质数判断(s) && s * z == a)
	//if (z == 整数逆序(z) || s == 整数逆序(s))
		std::cout << z << "\t" << s << "\n";
}



void 质数乘积()
{//缘由https://bbs.csdn.net/topics/603462686
	long long a = 7140229933, z = a, s = 0;
	z = 快速近积数(z);
	std::cout << z << "快速近积数\t\n"; 
	if (!(z % 2))--z;
	while ((z -= 2) <= (s = a / z))
		if (质数判断(z) && 质数判断(s) && s * z == a)
			//if (z == 整数逆序(z) || s == 整数逆序(s))
			std::cout << z << "\t" << s << "\n", z = 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值