热门标签 | 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;
}














推荐阅读
  • 深入解析Apache SkyWalking CVE-2020-9483 SQL注入漏洞
    本文详细探讨了Apache SkyWalking中的SQL注入漏洞(CVE-2020-9483),特别是其影响范围、漏洞原因及修复方法。Apache SkyWalking是一款强大的应用性能管理工具,广泛应用于微服务架构中。然而,该漏洞使得未经授权的攻击者能够通过特定的GraphQL接口执行恶意SQL查询,从而获取敏感信息。 ... [详细]
  • 2020年末最后机会!加入CSDN官方插件内测赢取丰厚奖励
    CSDN官方推出的全新插件已上线,为程序员提供更高效的工作体验。如果你还不了解这款插件,那么你可能已经错过了一部分精彩。现在,加入我们的内测活动,不仅可以提升你的工作效率,还有机会赢取丰厚奖励。 ... [详细]
  • 本文探讨了在使用阿里云RDS实例时遇到的一个时区问题。该问题导致系统时间与预期时间相差13小时。通过深入分析,发现问题是由于名为CST的时区存在多种解释,特别是在MySQL和Java之间进行时区协商时出现的误解。 ... [详细]
  • 探讨如何通过父组件更新子组件中的D3图表,特别是当涉及多个子组件间的交互时的方法与挑战。 ... [详细]
  • 本文详细介绍了使用NumPy和TensorFlow实现的逻辑回归算法。通过具体代码示例,解释了数据加载、模型训练及分类预测的过程。 ... [详细]
  • 在Elasticsearch中,映射(mappings)定义了索引中字段的结构,类似于传统数据库中的表结构。虽然Elasticsearch支持字段的增删,但直接修改字段类型是不允许的。本文介绍了一种通过创建新索引并迁移数据的方式来改变字段类型的方法。 ... [详细]
  • 精选Unity开源项目:UniRx实现响应式编程
    本文介绍了Unity中的响应式编程框架——UniRx,探讨了其在解决异步编程难题中的应用及优势。 ... [详细]
  • 本文档详细介绍了2017年8月31日关于MySQL数据库备份与恢复的教学内容,包括MySQL日志功能、备份策略、备份工具及实战演练。 ... [详细]
  • 本文将提供详细的步骤和注意事项,帮助您顺利从Exchange 2007升级到2010 SP1版本。内容基于实际操作经验和技术文档整理。 ... [详细]
  • ECharts 基础使用指南
    本文档提供了一个简单的 ECharts 使用示例,帮助初学者快速了解如何在网页中集成和使用 ECharts 创建图表。更多详细信息请参阅官方文档:https://www.echartsjs.com/zh/tutorial.html#5%20分钟上手%20ECharts ... [详细]
  • Zookeeper面试常见问题解析
    本文详细介绍了Zookeeper中的ZAB协议、节点类型、ACL权限控制机制、角色分工、工作状态、Watch机制、常用客户端、分布式锁实现、默认通信框架以及消息广播和领导选举的流程。 ... [详细]
  • 本文探讨了在使用basicHttpBinding通过HTTPS发送请求时遇到的握手失败问题,分析了可能的原因及解决方案。 ... [详细]
  • C# 对象转 JSON 字符串的方法与应用
    本文介绍如何在 C# 中使用一般处理程序(ASHX)将对象转换为 JSON 字符串,并通过设置响应类型为 application/json 来确保客户端能够正确解析返回的数据。同时,文章还提供了 HTML 页面中不依赖 jQuery 的 AJAX 方法来接收和处理这些 JSON 数据的具体实现。 ... [详细]
  • 基于 NCNN 框架的 PelleeNet_SSD 实现,适用于嵌入式和移动设备的高效目标检测。 ... [详细]
  • 对 manual_async_fn 进行了改进,确保其能够正确处理和捕获输入的生命周期。 ... [详细]
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社区 版权所有