热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

等式(数论/唯一分解定理)

链接:https:www.nowcoder.comacmcontest90F来源:牛客网题目描述给定n,求1x+1y1n(
链接: https://www.nowcoder.com/acm/contest/90/F
来源:牛客网

题目描述

给定n,求1/x + 1/y = 1/n (x<=y)的解数。(x、y、n均为正整数)


输入描述:

在第一行输入一个正整数T。
接下来有T行,每行输入一个正整数n,请求出符合该方程要求的解数。
(1<=n<=1e9)

输出描述:

输出符合该方程要求的解数。

首先明白一个定理:唯一分解定理(算数基本定理)


            任何一个大于1的自然数 N,如果N不为质数,那么N可以唯一分解成有限个质数的乘积N=P1a1P2a2P3a3......Pnan,这里P1


证明可以去网上搜;


                接下来有几个重要的推论:


                 (1)一个大于1的正整数N,如果它的标准分解式为
 :
 
  
                        n=  p1^a1 * p2^a2 * p3^a3 * p4^a4 ......  * pk^ak
                         ,那么它的正因数个数为(1+a1)* (1+a2) * (1+a3) * (1+a4) * .......* (1+ak);
                  
(2)此外还可证明根号2是 无理数等等。
(3)证明 素数个数无限。
        在本题中我们用的是推论一:                   我们设 n+a=x, n+b=y,带入等式化简后得n^2=a*b且b>=a;
                   那么问题就转换成求n^2有多少对因子; 
                   可以用短除法可以将n分解p1^a1 * p2^a2 * p3^a3 * p4^a4 ......  * pk^ak(pi为质数)的形式。 
                   那么n^2=p1^(2*a1) * p2^(2*a2) * p3^(2^a3) * p4^(2*a4)  *..... * pk^(2*ak); 
                   可以推出n^2所有的因子个数sum为(1+2*a1)* (1+2*a2) * (1+2*a3) * (1+2*a4) * .......* (1+2*ak); 
                   所以结果为(sum+1)/2;     (sum+1是因为考虑到a==b==n的情况);


代码如下:


#include
int DecompositionFactor(int n);
/*
3
1
20180101
1000000000
输出

1
5
181
*/ 
int main()
{
	int t;
	
	scanf("%d",&t);
	
	while(t--)
	{
		int n;
		
		scanf("%d",&n) ;
		
		int sum = DecompositionFactor(n);    //求出n^2的所有因子的个数 
		
		printf("%d\n",(sum + 1) / 2);
		
	}
	
	
	
	
	return 0;
} 
int DecompositionFactor(int n)
{
	int sum = 1;
	
	for(int i = 2;i*i <= n;i++)
	{
		int count = 0;
		
		while(n%i == 0)
		{
			count++;
			
			n/=i;
		}
		
		sum *= (1 + 2 * count);
	}
	
	if(n != 1)
	sum *= (1 + 2 * 1);
	
	return sum;
}














推荐阅读
  • 如何在Python中配置库并创建可视化对象:详细指南与实践步骤
    本文详细介绍了如何在Python中配置库并创建复杂的可视化对象。通过具体的实践步骤,读者将学会利用Python的强大功能来实现高度定制化的数据可视化,特别是在PowerBI环境中,Python能够显著提升可视化的灵活性和表现力。 ... [详细]
  • 该问题可能由守护进程配置不当引起,例如未识别的JVM选项或内存分配不足。建议检查并调整JVM参数,确保为对象堆预留足够的内存空间(至少1572864KB)。此外,还可以优化应用程序的内存使用,减少不必要的内存消耗。 ... [详细]
  • Facebook开发先进AI系统,深入解析个人生活视角
    Facebook正大力投资于增强现实技术,与Ray-Ban合作开发AR眼镜。目前,这些设备主要用于图像的记录和分享,但公司展望未来,认为这些装置将具备更广泛的功能。一个由研究人员组成的团队正在开发先进的AI系统,旨在深入解析用户的个人生活视角,从而提供更加个性化的体验和服务。 ... [详细]
  • 深入理解排序算法:集合 1(编程语言中的高效排序工具) ... [详细]
  • VS调试失败,程序直接退出,错误提示:1. 请使用调试生成配置或禁用“仅我的代码”调试选项...
    在尝试调试一个示例项目时,遇到了无法进入调试模式的问题,程序在运行过程中直接退出,尽管已设置断点。调试输出提示需要使用调试生成配置或禁用“仅我的代码”调试选项。此外,建议检查项目配置文件中的调试设置,确保所有依赖项都已正确配置,并验证是否启用了其他可能影响调试的选项。 ... [详细]
  • QT框架中事件循环机制及事件分发类详解
    在QT框架中,QCoreApplication类作为事件循环的核心组件,为应用程序提供了基础的事件处理机制。该类继承自QObject,负责管理和调度各种事件,确保程序能够响应用户操作和其他系统事件。通过事件循环,QCoreApplication实现了高效的事件分发和处理,使得应用程序能够保持流畅的运行状态。此外,QCoreApplication还提供了多种方法和信号槽机制,方便开发者进行事件的定制和扩展。 ... [详细]
  • 在更换电脑或重装系统时,用户经常需要处理诸如备份收藏夹、电子邮件、用户配置文件和常用文档等任务。尽管这些操作并不复杂,但却相当繁琐。本文介绍了一种利用Windows 7中的“轻松传送”功能,高效便捷地在两台电脑之间同步数据的方法,大大简化了这一过程。 ... [详细]
  • 利用ZFS和Gluster实现分布式存储系统的高效迁移与应用
    本文探讨了在Ubuntu 18.04系统中利用ZFS和Gluster文件系统实现分布式存储系统的高效迁移与应用。通过详细的技术分析和实践案例,展示了这两种文件系统在数据迁移、高可用性和性能优化方面的优势,为分布式存储系统的部署和管理提供了宝贵的参考。 ... [详细]
  • 在关系型数据库中,数据约束是指在向数据表中插入数据时必须遵循的限制条件。在MySQL和MariaDB中,常见的数据约束包括主键约束、唯一键约束、外键约束以及非空约束等。这些约束确保了数据的完整性和一致性,是数据库管理中的重要组成部分。通过合理设置和使用这些约束,可以有效防止数据冗余和错误,提升数据库的可靠性和性能。 ... [详细]
  • 在iOS开发中,基于HTTPS协议的安全网络请求实现至关重要。HTTPS(全称:HyperText Transfer Protocol over Secure Socket Layer)是一种旨在提供安全通信的HTTP扩展,通过SSL/TLS加密技术确保数据传输的安全性和隐私性。本文将详细介绍如何在iOS应用中实现安全的HTTPS网络请求,包括证书验证、SSL握手过程以及常见安全问题的解决方法。 ... [详细]
  • 深入浅出:PHP 中的 unset() 函数解析与应用
    本文深入解析了 PHP 中的 `unset()` 函数,详细介绍了其功能和应用场景。`unset()` 函数用于释放指定的变量,语法格式为 `void unset(mixed $var[, mixed $var[, ...]])`。通过具体示例,文章展示了如何在实际开发中有效使用 `unset()` 来管理内存和变量状态,帮助开发者提高代码效率和程序性能。 ... [详细]
  • 如何在您的计算机上配置Python和PyCharm开发环境
    本文详细介绍了在Windows 10系统上配置Python和PyCharm开发环境的步骤。内容包括Python的安装与卸载、PyCharm的安装与卸载,以及如何在Windows 10中通过双击安装文件“python-3.7.2-amd64.exe”来完成Python的安装。此外,还提供了关于环境变量配置和基本设置的实用建议,帮助用户快速搭建高效的开发环境。 ... [详细]
  • 本文深入探讨了Java多线程环境下的同步机制及其应用,重点介绍了`synchronized`关键字的使用方法和原理。`synchronized`关键字主要用于确保多个线程在访问共享资源时的互斥性和原子性。通过具体示例,如在一个类中使用`synchronized`修饰方法,展示了如何实现线程安全的代码块。此外,文章还讨论了`ReentrantLock`等其他同步工具的优缺点,并提供了实际应用场景中的最佳实践。 ... [详细]
  • 随着“大数据”价值的日益凸显,从互联网、电商到金融和政府机构等各个领域都在积极应对海量数据的处理需求。如何以较低成本快速高效地构建大数据处理平台,已成为推动大数据应用创新的重要因素。为了帮助用户以最简便的方式实现这一目标,本文将详细介绍如何利用Hadoop和Spark技术搭建稳定可靠的大数据处理环境。 ... [详细]
  • 解决针织难题:R语言编程技巧与常见错误分析 ... [详细]
author-avatar
手机用户2502905937_275
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有