欧拉函数模板

6.9 欧拉函数
参考文献:
AC M-ICPC程序设计系列数论及其应用
扩展阅读:
http://www.cnblogs.com/DreamUp/archive/2010/07/24/1784116.html
编写:陈禹校核:曹振海

欧拉函数用希腊字母φ表示,φ(N)表示N的欧拉函数.

对φ(N)的值,我们可以通俗地理解为小于N且与N互质的数的个数(包含1)


6.9.1 基本原理
欧拉函数phi()是指不超过n且与n互素的正整数的个数
φ函数的值 通式:φ(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/pn),其中p1, p2……pn为x的所有质因数
设p是素数a是一个正整数phi(p^a)=p^a-p^a-1;
m与n互素phi(mn)=phi(m)phi(n);
phi(n)=n*sum(1-1/pi)/*pi是与n的质因子
n为奇数时phi(2n)=phi(n);
欧拉定理:对任何俩个互质的正整数a,m(m>=2) a^phi(m)=1(modm);
费马小定理:当m是质数是 a^m-1=1(modm);

以上,照本宣科,反正我自己是没心思慢慢看,嘿嘿,所以整理如下:

欧拉函数的一些性质:

1.对于素数p, φ(p)=p-1,对于对两个素数p,q φ(pq)=pq-1

即φ(mn)=φ(n)*φ(m)只在(n,m)=1时成立.

2.对于一个正整数N的素数幂分解N=P1^q1*P2^q2*...*Pn^qn.

   φ(N)=N*(1-1/P1)*(1-1/P2)*...*(1-1/Pn).

3.除了N=2,φ(N)都是偶数.

4.设N为正整数,∑φ(d)=N (d|N).

#include<stdio.h>
#include<iostream>
#include<string.h>

using namespace std;
const int N=50005;
int phi[N];
int main()
{
	int maxn=0;
	scanf("%d",&maxn);//确认区间
	for(int i=1;i<=maxn;i++)//初始化
	{
		phi[i]=i;
	}
	for(int i=2;i<=maxn;i+=2)//筛去2的倍数,因为 /i*(i-1)在i=2时等价于/2
	{
		phi[i]=phi[i]/2;
	}
	for(int i=3;i<=maxn;i+=2)//筛3,5,7....但是并没有9,15,等等因为如下
	{
		if(phi[i]==i)
		{
			for(int j=i;j<=maxn;j+=i)//筛3的时候,6,9,15....等等都被修改了
			{
				phi[j]=phi[j]/i*(i-1);//按公式修改
			}
		}
	}
	for(int i=1;i<=maxn;i++)
	printf("%d的欧拉值是:%d\n",i,phi[i]);
	printf("\n");
    for(int i=1;i<=maxn;i++)
    {
    	if(phi[i]==i-1)
    	printf("%d为质数\n",i);
	}
	return 0;
}

 

内容概要:本文介绍了基于贝叶斯优化的CNN-LSTM混合神经网络在时间序列预测中的应用,并提供了完整的Matlab代码实现。该模型结合了卷积神经网络(CNN)在特征提取方面的优势与长短期记忆网络(LSTM)在处理时序依赖问题上的强大能力,形成一种高效的混合预测架构。通过贝叶斯优化算法自动调参,提升了模型的预测精度与泛化能力,适用于风电、光伏、负荷、交通流等多种复杂非线性系统的预测任务。文中还展示了模型训练流程、参数优化机制及实际预测效果分析,突出其在科研与工程应用中的实用性。; 适合人群:具备一定机器学习基基于贝叶斯优化CNN-LSTM混合神经网络预测(Matlab代码实现)础和Matlab编程经验的高校研究生、科研人员及从事预测建模的工程技术人员,尤其适合关注深度学习与智能优化算法结合应用的研究者。; 使用场景及目标:①解决各类时间序列预测问题,如能源出力预测、电力负荷预测、环境数据预测等;②学习如何将CNN-LSTM模型与贝叶斯优化相结合,提升模型性能;③掌握Matlab环境下深度学习模型搭建与超参数自动优化的技术路线。; 阅读建议:建议读者结合提供的Matlab代码进行实践操作,重点关注贝叶斯优化模块与混合神经网络结构的设计逻辑,通过调整数据集和参数加深对模型工作机制的理解,同时可将其框架迁移至其他预测场景中验证效果。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值