计算两个随机数互为素数的概率

2023-11-05 17:20

本文主要是介绍计算两个随机数互为素数的概率,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

研究这个问题开始,先研究随机数的做法
随机数这里用伪随机数就够了,这里需要用到srand()rand()两个函数,这两个函数头文件为stdlib.h
这两个函数的原型为:

一般操作为:先用srand()函数产生随机数种子。计算机产生伪随机数,是通过一系列的函数计算得来的。就是srand()中所返回的参考值,通过计算得到的数字,每次取出其中一个,如果每次使用的都是同一个种子,那么得到的随机数也就是相同的,因此要得到不同的随机数,就需要使用不同的种子数,又不能每次用完一个数字又去手动更换一个种子数,但是时间是会变化的,因此我们使用srand(time(NULL))来使得每一次的种子数都不同。值得注意的是:srand()函数不要放在循环语句中使用,否则会导致每次的时间过短(不足1s),而产生一系列相同的随机数(这就有点尴尬了)。例如:在这里插入图片描述
解释完随机数之后,就需要来了解下互为素数的算法。可以用欧几里得算法(辗转相除法),只需要计算两个数字的最小公因数为1,就可以得出两者互为素数。

程序如下:

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <windows.h>int Gcd(int M, int N);int main(void)
{int a, b, c;srand(time(NULL));while (1){int i, j, Tot = 0, Rel = 0;for (i = 0; i < 10000; i++)//这里用了10000组数字做统计{a = rand();b = rand();//printf("%d\t%d\n\n", a, b);Tot++;if (Gcd(a, b) == 1)Rel++;				}printf("两个随机数互为素数的概率为%f\n",(double) Rel / Tot);Sleep(500);//结果出现的不会太快}return 0;
}int Gcd(int M, int N)//欧几里得算法
{while (N > 0){int Rem = M % N;M = N;N = Rem;}return M;
}

最后的结果趋近于6/π²(官方数据啦),大概就是0.61左右。

这篇关于计算两个随机数互为素数的概率的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python如何计算两个不同类型列表的相似度

《Python如何计算两个不同类型列表的相似度》在编程中,经常需要比较两个列表的相似度,尤其是当这两个列表包含不同类型的元素时,下面小编就来讲讲如何使用Python计算两个不同类型列表的相似度吧... 目录摘要引言数字类型相似度欧几里得距离曼哈顿距离字符串类型相似度Levenshtein距离Jaccard相

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

C#比较两个List集合内容是否相同的几种方法

《C#比较两个List集合内容是否相同的几种方法》本文详细介绍了在C#中比较两个List集合内容是否相同的方法,包括非自定义类和自定义类的元素比较,对于非自定义类,可以使用SequenceEqual、... 目录 一、非自定义类的元素比较1. 使用 SequenceEqual 方法(顺序和内容都相等)2.

使用C#代码计算数学表达式实例

《使用C#代码计算数学表达式实例》这段文字主要讲述了如何使用C#语言来计算数学表达式,该程序通过使用Dictionary保存变量,定义了运算符优先级,并实现了EvaluateExpression方法来... 目录C#代码计算数学表达式该方法很长,因此我将分段描述下面的代码片段显示了下一步以下代码显示该方法如

锐捷和腾达哪个好? 两个品牌路由器对比分析

《锐捷和腾达哪个好?两个品牌路由器对比分析》在选择路由器时,Tenda和锐捷都是备受关注的品牌,各自有独特的产品特点和市场定位,选择哪个品牌的路由器更合适,实际上取决于你的具体需求和使用场景,我们从... 在选购路由器时,锐捷和腾达都是市场上备受关注的品牌,但它们的定位和特点却有所不同。锐捷更偏向企业级和专

如何用Java结合经纬度位置计算目标点的日出日落时间详解

《如何用Java结合经纬度位置计算目标点的日出日落时间详解》这篇文章主详细讲解了如何基于目标点的经纬度计算日出日落时间,提供了在线API和Java库两种计算方法,并通过实际案例展示了其应用,需要的朋友... 目录前言一、应用示例1、天安门升旗时间2、湖南省日出日落信息二、Java日出日落计算1、在线API2

hdu4865(概率DP)

题意:已知前一天和今天的天气概率,某天的天气概率和叶子的潮湿程度的概率,n天叶子的湿度,求n天最有可能的天气情况。 思路:概率DP,dp[i][j]表示第i天天气为j的概率,状态转移如下:dp[i][j] = max(dp[i][j, dp[i-1][k]*table2[k][j]*table1[j][col] )  代码如下: #include <stdio.h>#include

poj 1113 凸包+简单几何计算

题意: 给N个平面上的点,现在要在离点外L米处建城墙,使得城墙把所有点都包含进去且城墙的长度最短。 解析: 韬哥出的某次训练赛上A出的第一道计算几何,算是大水题吧。 用convexhull算法把凸包求出来,然后加加减减就A了。 计算见下图: 好久没玩画图了啊好开心。 代码: #include <iostream>#include <cstdio>#inclu

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

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

uva 11178 计算集合模板题

题意: 求三角形行三个角三等分点射线交出的内三角形坐标。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <