实现MillerRabin时发现报错 Run-Time Check Failure #2 - Stack around the variable ‘aa‘ was corrupted.

本文主要是介绍实现MillerRabin时发现报错 Run-Time Check Failure #2 - Stack around the variable ‘aa‘ was corrupted.,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Run-Time Check Failure #2 - Stack around the variable ‘aa’ was corrupted.

记录一次在VS2019中使用C++实现MillerRabin代码时的报错。

Run-Time Check Failure #2 - Stack around the variable ‘aa’ was corrupted.

在这里插入图片描述
这个报错的位置有点奇怪,在函数末尾。
MillerRabin()
最终发现是这边游标越界了,数组长度只有50。
在这里插入图片描述
完整代码如下

int m_power(int a, int n, int p)
{int nn[50], aa[50], bb[50]; // 此处存在问题:只有在50范围之内的数才行int temp, num, r ;int i = 0;//for (size_t i = 0; i < 50; i++)//{//	nn[i] = -1;//}temp = n;while (temp != 0){num = temp % 2;nn[i] = num;i++;temp = temp / 2;}r = i - 1;//cout << "r"<<r;aa[0] = a;bb[0] = a;for (i = 0; i < n; i++){aa[i + 1] = (aa[i] * aa[i]) % p;bb[i + 1] = aa[i + 1];//cout <<"i"<< i << " ";}int x;x = 1;for (i = 0; i <= r ; i++){if (nn[i] == 1)x = (x * bb[i]) % p;}return x;//aa Run-Time Check Failure #2 - Stack around the variable 'aa' was corrupted.
}bool m_MillerRabin(int num)
{int m, b, a, z, r;int i, j;m = num - 1;b = 0;while (m % 2 == 0){m = m / 2;b += 1;}//cout << "m=" << m << ", b=" << b << endl;r = num - 1;for (i = 0; i < 10; i++){a = rand() % r;z = m_power(a, m, num);//cout << "a=" << a;//cout << "  z=" << z<<endl;if ((z != 1) && (z != (num - 1))){j = 0;while ((j < b) && (z != (num - 1))){z = (z * z) % num;if (z == 0)return 0;else j++;}}else {return 1;}if (z != (num - 1)){return 0;}}return 1;
}
//Miller Rabin 算法
void MillerRabin()
{for (size_t i = 2; i < 50; i++){if (m_MillerRabin(i)){cout <<i<<" is Prime" << endl;}else{cout << i << " not Prime"<<endl;}cout << " ================================"<<endl;}}int main()
{MillerRabin();return 0;
}

这篇关于实现MillerRabin时发现报错 Run-Time Check Failure #2 - Stack around the variable ‘aa‘ was corrupted.的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/738026

相关文章

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

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

解决1093 - You can‘t specify target table报错问题及原因分析

《解决1093-Youcan‘tspecifytargettable报错问题及原因分析》MySQL1093错误因UPDATE/DELETE语句的FROM子句直接引用目标表或嵌套子查询导致,... 目录报js错原因分析具体原因解决办法方法一:使用临时表方法二:使用JOIN方法三:使用EXISTS示例总结报错原

Spring StateMachine实现状态机使用示例详解

《SpringStateMachine实现状态机使用示例详解》本文介绍SpringStateMachine实现状态机的步骤,包括依赖导入、枚举定义、状态转移规则配置、上下文管理及服务调用示例,重点解... 目录什么是状态机使用示例什么是状态机状态机是计算机科学中的​​核心建模工具​​,用于描述对象在其生命

Spring Boot 结合 WxJava 实现文章上传微信公众号草稿箱与群发

《SpringBoot结合WxJava实现文章上传微信公众号草稿箱与群发》本文将详细介绍如何使用SpringBoot框架结合WxJava开发工具包,实现文章上传到微信公众号草稿箱以及群发功能,... 目录一、项目环境准备1.1 开发环境1.2 微信公众号准备二、Spring Boot 项目搭建2.1 创建

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.

Linux下删除乱码文件和目录的实现方式

《Linux下删除乱码文件和目录的实现方式》:本文主要介绍Linux下删除乱码文件和目录的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下删除乱码文件和目录方法1方法2总结Linux下删除乱码文件和目录方法1使用ls -i命令找到文件或目录

SpringBoot+EasyExcel实现自定义复杂样式导入导出

《SpringBoot+EasyExcel实现自定义复杂样式导入导出》这篇文章主要为大家详细介绍了SpringBoot如何结果EasyExcel实现自定义复杂样式导入导出功能,文中的示例代码讲解详细,... 目录安装处理自定义导出复杂场景1、列不固定,动态列2、动态下拉3、自定义锁定行/列,添加密码4、合并

mybatis执行insert返回id实现详解

《mybatis执行insert返回id实现详解》MyBatis插入操作默认返回受影响行数,需通过useGeneratedKeys+keyProperty或selectKey获取主键ID,确保主键为自... 目录 两种方式获取自增 ID:1. ​​useGeneratedKeys+keyProperty(推

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

Linux在线解压jar包的实现方式

《Linux在线解压jar包的实现方式》:本文主要介绍Linux在线解压jar包的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux在线解压jar包解压 jar包的步骤总结Linux在线解压jar包在 Centos 中解压 jar 包可以使用 u