C语言学习历程——编程练习2——09
来源:互联网 发布:java string变量类型 编辑:程序博客网 时间:2024/05/18 01:36
当p是素数并且Mp也是素数时,称Mp为默森尼数,
例如,p=5,Mp=2^5-1=31,5和31都是素数,因此31是默森尼数;
而Mp=2^11-1=2047,11是素数,2047不是素数,因此2047不是默森尼数.
分析:先找出10000以内的素数,然后使用公式求出符合条件的数
下面是代码实现:
/*********************************************************************
找出7个默森尼数。法国数学家默森尼曾提出下列公式:Mp=2^p-1。
当p是素数并且Mp也是素数时,称Mp为默森尼数,
例如,p=5,Mp=2^5-1=31,5和31都是素数,因此31是默森尼数;
而Mp=2^11-1=2047,11是素数,2047不是素数,因此2047不是默森尼数.
*********************************************************************/
#include <stdio.h>
#include <math.h>
int JudgePrime(int p) //判断一个数是否为素数,是则返回0,不是返回-1
{
int flag = 0;
int i = 0;
for (i = 2; i < p; i++)
{
if (p % i == 0)
{
flag = 1;
}
}
if (flag == 0)
{
return 0;
}
return -1;
}
int MersenneNum(long *Arr) //求Mersenne数,放入数组中
{
long int Mp = 0;
int p = 0;
int count = 0;
for (p = 2; p <= 10000; p++)
{
if (JudgePrime(p) == 0) //判断p是不是素数
{
Mp = pow(2, p) - 1;
if (JudgePrime(Mp) == 0)
{
Arr[count++] = Mp; //判断Mp是不是素数,是则放入数组中
if (count >= 7)
{
break; //算出7个则退出
}
}
}
}
return count;
}
void PrintArr(long *Arr, int count) //打印结果
{
int i = 0;
for (i = 0; i < count; i++)
{
printf ("%ld ", Arr[i]);
}
printf ("\n");
}
int main()
{
long int Arr[100] = {0}; //存放求得的Mersenne number
int count = 0;
count = MersenneNum(Arr);
PrintArr(Arr, count);
return 0;
}
- C语言学习历程——编程练习2——09
- C语言学习历程——编程练习2——01
- C语言学习历程——编程练习2——02
- C语言学习历程——编程练习2——03
- C语言学习历程——编程练习2——04
- C语言学习历程——编程练习2——05
- C语言学习历程——编程练习2——06
- C语言学习历程——编程练习2——07
- C语言学习历程——编程练习2——08
- C语言学习历程——编程练习2——10
- C语言学习历程——编程练习3——01
- C语言学习历程——编程练习3——02
- C语言学习历程——编程练习3——03
- C语言学习历程——编程练习3——04
- C语言学习历程——编程练习3——05
- C语言学习历程——Training02位运算01
- C语言学习历程——Training02位运算02
- C语言学习历程——Training02位运算03
- Fix docker `Unknown runtime specified oci` error
- 实现“延迟消息”功能
- 基于HTML5的视频播放器
- Jvascript正则表达式 学习
- el表达式截取时间字符串
- C语言学习历程——编程练习2——09
- Java解惑学习有感(六)---库之谜
- 离散基础 (9). 整除性
- AdaBoost训练出现问题:Train dataset for temp stage can not be filled
- 【Android】Android 4.0 Camera架构分析之Camera初始化
- 神经网络压缩:Mimic(一)Do Deep Nets Really Need to be Deep
- 如何手动关闭tomcat服务,不在Eclipse中的server里按那个红色按钮关。
- 图论矩乘——BZOJ1297 [SCOI2009]迷路
- Source Insight 中文乱码终极解决