唯一分解定理小练

2024-06-06 17:48
文章标签 定理 唯一 分解 小练

本文主要是介绍唯一分解定理小练,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

POJ 1845 Sumdiv

这是一道考查唯一分解定理的题目,提议是给出A和B,让你求出A^B的所有因数的和。由唯一分解定理可知。A^B=(x1^y1)*(x2^y2)*...*(xn^yn),且其中x1,x2,,,xn均为质数。这样的话因数的和就可以知道为:(1+x1+x1^2+...+x1^y1)*(1+x2+x2^2+...+x2^y2)*...*(1+xn+xn^2+xn^yn),这样的话又继续分析。发现(1+x+x^2+x^3)=(1+x)*(1+x^2);(1+x+x^2+x^3+x^4)=(1+x)*(1+x^3)+x^2;这样就可通过对奇偶进行判断递归得到相应的值了。

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int ci[7100],ge[7100];
__int64 p(__int64 x,__int64 y)//求y次方
{__int64 res=1;while(y>0){if(y%2==1){res=(res*x)%9901;}x=(x*x)%9901;y/=2;}return res;
}
__int64 g(__int64 r,__int64 l)//递归求和
{if(l==0){return 1;}if(l%2==1){return ((1+p(r,l/2+1))%9901*g(r,l/2)%9901)%9901;}else{return ((1+p(r,l/2+1))%9901*g(r,l/2-1)%9901+p(r,l/2)%9901)%9901;}
}
int main()
{__int64 a,b,t,num=1;int i,j;scanf("%I64d%I64d",&a,&b);memset(ge,0,sizeof(ge));j=0;for(i=2;i*i<=a;++i)//得到次幂个数和质因数{if(a%i==0){ci[j]=i;while(a%i==0){a/=i;ge[j]++;}j++;}}if(a>1){ci[j]=a;ge[j++]=1;}for(i=0;i<j;++i){t=g(ci[i],ge[i]*b);num=(num*t)%9901;}cout<<num<<endl;return 0;
}

POJ 2262 Goldbach's Conjecture 

简单题,这题要说的不多,主要是素数判断这一块,算术基本定理,也称为素数的唯一分解定理,由此定理可以得出素数判断的循环次数。还有注意写的时候我的(int d=sqrt(x))是判CE,所以要注意细节,因为编译器可能不会判断出来。

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
bool check(int x)
{int i,d=int(sqrt(double(x)));//注意细节for(i=2;i<=d;++i){if(x%i==0){return false;}}return true;
}
int main()
{int n,i,f;while(cin>>n){f=0;if(n==0){break;}for(i=3;i<=n/2;++i)//注意范围{if(check(i)==true&&check(n-i)==true&&i%2==1&&(n-i)%2==1)//判断是否符合条件{printf("%d = %d + %d\n",n,i,n-i);f=1;break;}}if(f==0){cout<<"Goldbach's conjecture is wrong."<<endl;}}return 0;
}


这篇关于唯一分解定理小练的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1036799

相关文章

MySQL逻辑删除与唯一索引冲突解决方案

《MySQL逻辑删除与唯一索引冲突解决方案》本文探讨MySQL逻辑删除与唯一索引冲突问题,提出四种解决方案:复合索引+时间戳、修改唯一字段、历史表、业务层校验,推荐方案1和方案3,适用于不同场景,感兴... 目录问题背景问题复现解决方案解决方案1.复合唯一索引 + 时间戳删除字段解决方案2:删除后修改唯一字

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

SpringBoot项目使用MDC给日志增加唯一标识的实现步骤

《SpringBoot项目使用MDC给日志增加唯一标识的实现步骤》本文介绍了如何在SpringBoot项目中使用MDC(MappedDiagnosticContext)为日志增加唯一标识,以便于日... 目录【Java】SpringBoot项目使用MDC给日志增加唯一标识,方便日志追踪1.日志效果2.实现步

uva 1342 欧拉定理(计算几何模板)

题意: 给几个点,把这几个点用直线连起来,求这些直线把平面分成了几个。 解析: 欧拉定理: 顶点数 + 面数 - 边数= 2。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#inc

集群环境下为雪花算法生成全局唯一机器ID策略

雪花算法是生成数据id非常好的一种方式,机器id是雪花算法不可分割的一部分。但是对于集群应用,让不同的机器自动产生不同的机器id传统做法就是针对每一个机器进行单独配置,但这样做不利于集群水平扩展,且操作过程非常复杂,所以每一个机器在集群环境下是一个头疼的问题。现在借助spring+redis,给出一种策略,支持随意水平扩展,肥肠好用。 大致策略分为4步: 1.对机器ip进行hash,对某一个(大于

Java验证辛钦大数定理

本实验通过程序模拟采集大量的样本数据来验证辛钦大数定理。   实验环境: 本实验采用Java语言编程,开发环境为Eclipse,图像生成使用JFreeChart类。   一,验证辛钦大数定理 由辛钦大数定理描述为: 辛钦大数定理(弱大数定理)  设随机变量序列 X1, X2, … 相互独立,服从同一分布,具有数学期望E(Xi) = μ, i = 1, 2, …, 则对于任意正数ε ,

特征值分解(EVD)和奇异值分解(SVD)—应用于图片压缩

特征值分解(EVD)和奇异值分解(SVD)—应用于图片压缩 目录 前言 一、特征值分解 二、应用特征值分解对图片进行压缩 三、矩阵的奇异值分解 四、应用奇异值分解对图片进行压缩 五、MATLAB仿真代码 前言         学习了特征值分解和奇异值分解相关知识,发现其可以用于图片压缩,但网上没有找到相应代码,本文在学习了之后编写出了图片压缩的代码,发现奇异值分

CPC23三 K.(Lucas定理)

K.喵喵的神·数 Time Limit: 1 Sec Memory Limit: 128 MB Description 喵喵对组合数比较感兴趣,并且对计算组合数非常在行。同时为了追求有后宫的素质的生活,喵喵每天都要研究质数。 我们先来复习一下什么叫做组合数。对于正整数P、T 然后我们再来复习一下什么叫质数。质数就是素数,如果说正整数N的约数只有1和它本身,N

前端vue项目生成唯一的uuid

一、使用步骤 1.安装uuid 代码如下(示例): npm install -S uuid 2.在需要使用uuid的.vue文件中生成并存储uuid 代码如下(示例): import { v4 as uuidv4 } from 'uuid';mounted () {let sid=''if(localStorage.getItem('sid')){sid=localStorage.g