C语言程序设计——函数 梅森尼数形如2^i-1的素数,称为梅森尼数。编程计算并输出指数i在[2,n]中的所有梅森尼数,并统计这些梅森尼数的个数,其中n的值由键盘输入,并且n的值不能大于50。
梅森尼数
形如2^i-1的素数,称为梅森尼数。编程计算并输出指数i在[2,n]中的所有梅森尼数,并统计这些梅森尼数的个数,其中n的值由键盘输入,并且n的值不能大于50。其中,2^i表示2的i次方,请不要使用pow(2,i)编程计算,应采用循环累乘求积的方式计算2^i。
提示:当i超过30以后,2^i-1的值会很大,不能用long型变量来存储,必须使用double类型来存储。对于double类型变量x(不是整型)不能执行求余运算,即不能用x%i == 0来判断x是否能被i整除,可以使用x/i == (long long)(x/i)来判断x是否能被i整除。
程序运行示例
Input n:
50↙
2^2-1=3
2^3-1=7
2^5-1=31
2^7-1=127
2^13-1=8191
2^17-1=131071
2^19-1=524287
2^31-1=2147483647
count=8
输入提示信息:"Input n:\n"
输入格式: "%d"
输出格式: "2^%d-1=%.0f\n"
"count=%d\n"
代码如下:
#include<stdio.h>
#include<math.h>
int IsPrime(double x);
int main()
{ double t, m;int count = 0, i, n;printf("Input n:\n");scanf("%d", &n);t = 2;for (i = 2; i <= n; i++){ t = t * 2;m = t - 1;if (IsPrime(m)){ count++;printf("2^%d-1=%.0f\n", i, m);}}printf("count=%d\n", count);return 0;
}
// 函数功能:判断x是否是素数,若函数返回0,则表示不是素数,若返回1,则代表是素数
int IsPrime(double x)
{ int i, flag = 1;int squareRoot = (int)sqrt(x);if (x <= 1) flag = 0; // 负数、0和1都不是素数for (i = 2; i <= squareRoot && flag; i++){ if (x / i == (long long)(x / i)) flag = 0; // 若能被整除,则不是素数}return flag;
}
C语言程序设计——函数 梅森尼数形如2^i-1的素数,称为梅森尼数。编程计算并输出指数i在[2,n]中的所有梅森尼数,并统计这些梅森尼数的个数,其中n的值由键盘输入,并且n的值不能大于50。相关推荐
- C语言程序设计—循环设计 编写一个程序打印如下对称图形(行数由键盘输入1-9范围的值),例如下面是输入数字4时的情形:
编写一个程序打印如下对称图形(行数由键盘输入1-9范围的值),例如下面是输入数字4时的情形: 首先提示输入:"Enter n(1-9):\n" 输入格式:"%d" ...
- c语言程序设计函数题,C语言程序设计函数练习题及参考答案
<C语言程序设计函数练习题及参考答案>由会员分享,可在线阅读,更多相关<C语言程序设计函数练习题及参考答案(60页珍藏版)>请在人人文库网上搜索. 1.C语言程序设计练习题及参 ...
- c语言程序设计函数题,C语言程序设计函数练习题及参考答案.doc
C语言程序设计函数练习题及参考答案.doc C 语言程序设计练习题及参考答案 1. 定义一个函数 int funint a,int b,int c, 它的功能是 若 a,b,c 能构成等边三角形函数返 ...
- 【清华大学-郑莉教授】C++语言程序设计 函数的参数函数的内联、重载和系统函数的调用
[清华大学-郑莉教授]C++语言程序设计 函数的参数&&函数的内联.重载和系统函数的调用 函数的参数 交换算法 输入两个整数并交换 函数的内联.重载和系统函数的调用 内联函数 函数的重 ...
- C语言试题五之计算并输出给定数组(长度为9)中每相邻两个元素之平均值的平方根之和
1.题目 请编写函数function,它的功能是:计算并输出给定数组(长度为9)中每相邻两个元素之平均值的平方根之和 例子:若我们main函数给出double a[9] = {1, 2, 3, 4, ...
- 梅森数形如2 n −1的素数称为梅森数(Mersenne Number)。例如2 2 −1=3、2 3 −1=7都是梅森数。1722年,双目失明的瑞士数学大师欧拉证明了2 3
形如2 n −1的素数称为梅森数(Mersenne Number).例如2 2 −1=3.2 3 −1=7都是梅森数.1722年,双目失明的瑞士数学大师欧拉证明了2 31 ...
- 【C语言】从键盘任意输入一个3位整数,编程计算并输出它的逆序数(忽略整数前的正负号)。
C语言实战题目:从键盘任意输入一个3位整数,编程计算并输出它的逆序数(忽略整数前的正负号).例如,输入-123,则忽略负号,由123分离出其百位1.十位2.个位3,然后计算3*100+2*10+1 = ...
- 【C语言入门】假设银行定期存款的年利率 r 为 2.25 % ,从键盘输入本金和存款年限,编程计算并输出该笔存款到期后的本金和利息一共有多少。
题目:假设银行定期存款的年利率 r 为 2.25 % ,从键盘输入本金和存款年限,编程计算并输出 该笔存款到期后的本金和利息一共有多少. (例如:当本金为 1000 元,存入 10 后,应得的本金与利 ...
- 用二维数组作为函数参数,编程计算并输出n×n阶矩阵的转置矩阵。
按如下函数原型,用二维数组作为函数参数,编程计算并输出n×n阶矩阵的转置矩阵. 其中,n由用户从键盘输入.已知n值不超过10. void Transpose(int a[][N], int n); v ...
最新文章
- 二值网络训练--Training Competitive Binary Neural Networks from Scratch
- hdu 1213 How Many Tables ([kuangbin带你飞]专题五 并查集)
- 建立单独的解决方案来开发DNN模块
- vue项目实现登录(sessionStorage 存储 token)
- ShellExecute 函数的用法和实例
- 微型计算机原理偏移地址,微机原理试卷答案(B)
- Android Thread/Runnable/Handler用法
- SQL Server2008如何设置开启远程连接
- python 终止程序代码 多线程_我想问一下,tkinter 做多线程爬虫,让他停止该怎么做 quit 和 exit 都是直接退出程序...
- 手把手教你学DSP:基于TMS320C55x
- 三面网易,四面阿里,五年开发经验程序员剑指大厂,稳拿offer
- 【SSL证书】如何使用 FreeSSL (V2.8.0) 申请免费证书及安装
- Epicor 调试 customization
- JavaScript 每日一题---LeetCode 2.两数相加
- 积分商城游戏化运营?积分游戏应该如何正确设置
- 微信公众号修改业务域名、JS接口安全域名、网页授权域名
- 现在已经有越来越多的人开始投身到了深度介入产业,真正拥抱互联网
- jarvisoj_level0
- Writing an LLVM Pass
- php的框架修改建议,thinkphp 框架适配修改