程序设计中的数学思维函数总结(代码以C#为例)
最近以C#为例,学习了程序设计基础,其中涉及到一些数学思维,我们可以巧妙的将这些逻辑问题转换为代码,交给计算机运算。
现将经常会使用到的基础函数做一总结,供大家分享、自己备用。
1.判断一个数是否为奇数
定义:整数中,能被2整除的数是偶数,不能被2整除的数是奇数
思路点:n%2!=0则为奇数
/// <summary>
/// 判断一个整数是不是奇数
/// </summary>
/// <param name="n">要判断的整数</param>
/// <returns>是否奇数</returns>
static bool IsOdd(int n)
{
//不能被2整除,则为奇数
if (n % != )
{
return true;
}
//否则不为奇数
else
{
return false;
}
}
2.判断一个数是否为质数
定义:在大于1的自然数中,除了1和它本身以外不再有其他因数,这样的数称为质数。
方法一:查找法
思路点:设置循环,i大于等于2且小于n,若存在n%i==0的数,则不是质数
/// <summary>
/// 判断一个整数是不是质数
/// </summary>
/// <param name="n">大于1的自然数</param>
/// <returns>是否质数</returns>
static bool IsPrime(int n)
{
//在大于等于2到小于n的范围内,寻找是否存在能整除n的数
for (int i = ; i < n; i++)
{
//如果存在能整除n的数,则返回false
if(n%i==)
{
return false;
}
}
//循环结束,未找到能整除n的数,则返回true
return true;
}
方法二:计数法
思路点:设置循环,i大于等于2且小于n,若存在n%i==0的数,则进行计数;循环结束后,计数大于0,则不是质数
/// <summary>
/// 判断一个整数是不是质数
/// </summary>
/// <param name="n">大于1的自然数</param>
/// <returns>是否质数</returns>
static bool IsPrime(int n)
{
//设置变量sum,用于保存能整数n的数的数量
int sum = ;
//在大于等于2到小于n的范围内,寻找是否存在能整除n的数
for (int i = ; i < n; i++)
{
//如果存在能整除n的数,则sum自增1
if(n%i==)
{
sum++;
}
}
//循环结束,如果sum大于0,则代表不是质数,返回false;否则是质数,返回true
if (sum > )
{
return false;
}
else
{
return true;
}
}
3.判断一个数是否为自幂数
定义:一个 n 位数(n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153),3位数的3次幂数称为水仙花数。
思路点:a.将要判断的正整数转换为string类型,得到位数len;
b.将正整数%10得到个位,/10%10得到十位,/100%10得到百位,以此类推,直到/10^(len-1)%10得到最大位;
c.将各位数的len次幂相加,判断是否与正整数相等,相等则为自幂数。
/// <summary>
/// 判断一个数是否为水仙花数
/// </summary>
/// <param name="n">位数大于等于3的正整数</param>
/// <returns>是否水仙花数</returns>
static bool IsNarcissisticNumber(int n)
{
//定义len,赋值为n的位数
int len = (n.ToString()).Count();
//定义power,赋值为10的(len-1)次幂
int power = ;
for (int i = ; i < len; i++)
{
power *= ;
}
//定义sum,赋值为各位数的len次幂之和
int sum = ;
for (int j = ; j <= power; j*=)
{
//定义multiple,赋值为各位数的len次幂
int multiple = ;
for (int i = ; i <=len; i++)
{
multiple*=n / j % ;
}
sum += multiple;
}
//如果sum等于n,则是水仙花数,返回turn;否则不是,返回false
if (n == sum)
{
return true;
}
else
{
return false;
}
}
4.反序输出
定义:将需求从右到左输出在从左到右的输出端
思路点:将字符串看作是char的数组,设置循环,从最后一个元素开始输出,直到输出第一个元素
/// <summary>
/// 反序输出
/// </summary>
/// <param name="str">需要反序输出的字符串</param>
static void Antitone(string str)
{
for (int i = str.Length-; i >= ; i--)
{
Console.Write(str[i]);
}
}
5.斐波拉契数列
定义:斐波纳契数列以如下被以递归的方法定义:F(0)=1,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)
思路点:函数调用自身进行运算
/// <summary>
/// 查找斐波拉契数列第n位的数
/// </summary>
/// <param name="str">位数</param>
/// <return>斐波拉契数列第n位的数</return>>
static int FibonacciSequence(int n)
{
if (n == || n == )
{
return ;
}
else
{
return FibonacciSequence(n - ) + FibonacciSequence(n - );
}
}
6.阶乘
定义:一个正整数的阶乘,是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!
思路点:函数调用自身进行运算
/// <summary>
/// 计算阶乘
/// </summary>
/// <param name="str">正整数</param>
/// <return>阶乘结果</return>>
static int Factorial(int n)
{
if (n == )
{
return ;
}
else
{
return n*Factorial(n - );
}
}
程序设计中的数学思维函数总结(代码以C#为例)的更多相关文章
- Unity3D中Mathf数学运算函数总结
引入: 看到一个案例注意到函数Mathf.SmoothDamp的使用,游戏中用于做相机的缓冲跟踪和boss直升机跟踪士兵.该函数是Unity3D中Mathf数学运算函数中的一个.一些游戏使用了smoo ...
- JavaScript 中对变量和函数声明提前的演示样例
如题所看到的,看以下的演示样例(能够使用Chrome浏览器,然后F12/或者右键,审查元素.调出开发人员工具,进入控制台console输入)(使用技巧: 控制台输入时Shift+Enter能够中途代码 ...
- QT 中一些数学计算函数
QT的一些範例中有出現 qmax, qmin 等 math函式的身影,但我在官方文件中卻找不到與 math函式相關的說明,所以我就把函式的source裡面提供的方法整理條列,並且看看還有哪些 math ...
- C++ C# python 中常用数学计算函数对比
1.求x 的n次幂. C++ #include<cmath> f=pow(x,n) C# f=Math.Pow(x,n) python import numpy as np f=np.po ...
- 简答的理解C语言中的各种类型函数
1.变参函数 变长参数的函数即参数个数可变.参数类型不定 的函数.最常见的例子是printf函数.scanf函数和高级语言的Format函数.在C/C++中,为了通知编译器函数的参数个数和类型可变(即 ...
- 嵌入式程序设计中C/C++代码的优化
虽然使软件正确是一个工程合乎逻辑的最后一个步骤,但是在嵌入式的系统开发中,情况并不总是这样的.出于对低价产品的需求,硬件的设计者需要提供刚好足够的存储器和完成工作的处理能力.所以在嵌入式软件设计的最后 ...
- C语言中几个常用数学计算函数ceil(), floor(), round()的用法
最近在实现算法的过程中,遇到了使用几个数学计算函数,感觉挺有意思,就记下来 方便以后使用. ceil(x)返回不小于x的最小整数值(然后转换为double型). floor(x)返回不大于x的最大整数 ...
- 嵌入式实时程序设计中C/C++代码的优化
1 引言 计算机技术和信息技术的高速发展的今天,计算机和计算机技术大量应用在人们的日常生活中,嵌入式计算机也得到了广泛的应用.嵌入式计算机是指完成一种或多种特定功能的计算机系统,是软硬件的紧密结合体. ...
- 检查.net代码中占用高内存函数(翻译)
哈哈,昨天没事做,在CodeProject瞎逛,偶然看到这篇文章,居然读得懂,于是就翻译了一下,当练习英语,同时增强对文章的理解,发现再次翻译对于文章的一些细节问题又有更好的理解.下面是翻译内容,虽然 ...
随机推荐
- 在H3C交换机上开通一个VLAN并且开通一个端口ping通它
<H3C>system-view System View: return to User View with Ctrl+Z. [H3C]interface vlan-interface 2 ...
- 学习笔记TF024:TensorFlow实现Softmax Regression(回归)识别手写数字
TensorFlow实现Softmax Regression(回归)识别手写数字.MNIST(Mixed National Institute of Standards and Technology ...
- 进击的新版NavMesh系统:看我飞檐走壁
0x00 前言 unity5.6作为Unity5最后的一个版本,的确起到了一个承上启下的作用.除了上一篇文章<进击的AssetBundles和它的工具们>中提到的AssetBundles- ...
- hibernate之映射文件VS映射注解
前言 对于java开发者而言,注解应该不是一个陌生的概念,早在JavaSE阶段,例如@Override标记重写父类方法或实现接口方法,@Test标记单元测试方法,所以我们可以简单地把它理解为一种有特殊 ...
- JQuery学习笔记——基础选择器
第一篇博客,现在原生安卓需求不大了.招聘的Android工程师都需要附带更多的其他技术.这也是开启我学习前端之路的开端.前端时间看了HTML.CSS等,在界面渲染这一块,就不多记录博客了.现在学习着J ...
- C/C++中static的用法全局变量与局部变量
1.什么是static? static 是C/C++中很常用的修饰符,它被用来控制变量的存储方式和可见性. 1.1static的引入 我们知道在函数内部定义的变量,当程序执行到它的定义处时,编译器为它 ...
- iOS App签名的原理
前言 相信很多同学对于iOS的真机调试,App的打包发布等过程中的各种证书.Provisioning Profile. CertificateSigningRequest.p12的概念是模糊的,导致在 ...
- [C++ Calculator 项目] 初试
Calculator V1.0 注:这是一个C++计算器项目的初始部分. 大体功能简介: 能够输入一串数学表达式 逐字符扫描,提取数字和符号得到一组队列 逐行输出提取的符号与数字 实现代码如下: sc ...
- 一步一步学Vue(八)
本篇完成如下场景: 1.系统包含首页.客户信息查询.登录三个模块 2.默认进入系统首页,如果要进行用户查询,则需要进行登录授权 3.查询用户后点击列表项,则进入详情页面 基于上述场景需求描述,在客户端 ...
- Kotlin + Spring Boot 请求参数验证
编写 Web 应用程序的时候,经常要做的事就是要对前端传回的数据进行简单的验证,比如是否非空.字符长度是否满足要求,邮箱格式是否正确等等.在 Spring Boot 中,可以使用 Bean Valid ...