最近以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#为例)的更多相关文章

  1. Unity3D中Mathf数学运算函数总结

    引入: 看到一个案例注意到函数Mathf.SmoothDamp的使用,游戏中用于做相机的缓冲跟踪和boss直升机跟踪士兵.该函数是Unity3D中Mathf数学运算函数中的一个.一些游戏使用了smoo ...

  2. JavaScript 中对变量和函数声明提前的演示样例

    如题所看到的,看以下的演示样例(能够使用Chrome浏览器,然后F12/或者右键,审查元素.调出开发人员工具,进入控制台console输入)(使用技巧: 控制台输入时Shift+Enter能够中途代码 ...

  3. QT 中一些数学计算函数

    QT的一些範例中有出現 qmax, qmin 等 math函式的身影,但我在官方文件中卻找不到與 math函式相關的說明,所以我就把函式的source裡面提供的方法整理條列,並且看看還有哪些 math ...

  4. 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 ...

  5. 简答的理解C语言中的各种类型函数

    1.变参函数 变长参数的函数即参数个数可变.参数类型不定 的函数.最常见的例子是printf函数.scanf函数和高级语言的Format函数.在C/C++中,为了通知编译器函数的参数个数和类型可变(即 ...

  6. 嵌入式程序设计中C/C++代码的优化

    虽然使软件正确是一个工程合乎逻辑的最后一个步骤,但是在嵌入式的系统开发中,情况并不总是这样的.出于对低价产品的需求,硬件的设计者需要提供刚好足够的存储器和完成工作的处理能力.所以在嵌入式软件设计的最后 ...

  7. C语言中几个常用数学计算函数ceil(), floor(), round()的用法

    最近在实现算法的过程中,遇到了使用几个数学计算函数,感觉挺有意思,就记下来 方便以后使用. ceil(x)返回不小于x的最小整数值(然后转换为double型). floor(x)返回不大于x的最大整数 ...

  8. 嵌入式实时程序设计中C/C++代码的优化

    1 引言 计算机技术和信息技术的高速发展的今天,计算机和计算机技术大量应用在人们的日常生活中,嵌入式计算机也得到了广泛的应用.嵌入式计算机是指完成一种或多种特定功能的计算机系统,是软硬件的紧密结合体. ...

  9. 检查.net代码中占用高内存函数(翻译)

    哈哈,昨天没事做,在CodeProject瞎逛,偶然看到这篇文章,居然读得懂,于是就翻译了一下,当练习英语,同时增强对文章的理解,发现再次翻译对于文章的一些细节问题又有更好的理解.下面是翻译内容,虽然 ...

随机推荐

  1. VB6之借助zlib实现gzip解压缩

    这是个简版的,可以拿来做下网页gzip的解压缩,整好我的webserver还不支持这个,有时间了就加上. zlib.dll下载请点击我! 模块zlib.bas的代码如下: 'code by lichm ...

  2. MySQL缓存之Qcache与buffer pool对比

    Q:innodb buffer pool和Qcache的缓存区别? A: 1.Qcacche缓存的是SQL语句及对应的结果集,缓存在内存,最简单的情况是SQL一直不重复,那Qcache的命令率肯定是0 ...

  3. webpack 多页应用架构系列实战

    阅读目录 1.webpack配置了解 2.webpack CommonsChunkPlugin公共代码剥离 3.了解ProvidePlugin的用途 回到顶部 1.webpack配置了解 webpac ...

  4. 为何你跟着滴滴D8级前端大神撸代码,技术却依旧原地踏步?

    引子 听说最近有很多小伙伴,热衷于在慕课网上学习各种前端实战教程,并以完成项目为奋斗目标.比如本文接下来要提到的<Vue2.0高级实战之开发移动端音乐App>,这门课程的传授者是来自滴滴D ...

  5. Android - 多语言自动适配

    Android为多语言适配提供了很大的方便.开发者不需要在代码中进行修改.只需要配置xml文件. res --> values 其中存放有xml文件.一般这些都是英文的字符串.我们可以存放其他语 ...

  6. Python爬虫从入门到放弃(十九)之 Scrapy爬取所有知乎用户信息(下)

    在上一篇文章中主要写了关于爬虫过程的分析,下面是代码的实现,完整代码在:https://github.com/pythonsite/spider items中的代码主要是我们要爬取的字段的定义 cla ...

  7. Apache FtpServer 实现文件的上传和下载

    1 下载需要的jar包 Ftp服务器实现文件的上传和下载,主要依赖jar包为: 2 搭建ftp服务器 参考Windows 上搭建Apache FtpServer,搭建ftp服务器 3 主要代码 在ec ...

  8. 64位系统下8G内存仅使用到4G问题的解决方法

    笔记本:联想E46G 当前bios版本:25CN32WW 内存:DDR3 133 4G × 2 问题:bios信息显示8G,win7和ubuntu 在64位下使用情况仅4G 准备工作1:bios版本和 ...

  9. HTMl课堂随笔

    html: 1.超文本标记语言(Hyper Text Markup Lan) 2.不是一种编程语言,而是一种标记语言(Markup Language) 3.标记语言是一套标记标签(Markup Tag ...

  10. vc++MFC开发上位机程序

    用vc++MFC开发过不少跟单片机通讯的上位机程序了.搞懂了MFC架构,开发还是很快的,与底层单片机程序通讯,可以用串口.usb.网络.短信形式.串口现在用的越来越少了,一般电脑跟单片机在一块,使用串 ...