程序设计中的数学思维函数总结(代码以C#为例)
2017-08-20 13:05
357 查看
最近以C#为例,学习了程序设计基础,其中涉及到一些数学思维,我们可以巧妙的将这些逻辑问题转换为代码,交给计算机运算。
现将经常会使用到的基础函数做一总结,供大家分享、自己备用。
1.判断一个数是否为奇数
定义:整数中,能被2整除的数是偶数,不能被2整除的数是奇数
4000
思路点:n%2!=0则为奇数
2.判断一个数是否为质数
定义:在大于1的自然数中,除了1和它本身以外不再有其他因数,这样的数称为质数。
方法一:查找法
思路点:设置循环,i大于等于2且小于n,若存在n%i==0的数,则不是质数
方法二:计数法
思路点:设置循环,i大于等于2且小于n,若存在n%i==0的数,则进行计数;循环结束后,计数大于0,则不是质数
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次幂相加,判断是否与正整数相等,相等则为自幂数。
4.反序输出
定义:将需求从右到左输出在从左到右的输出端
思路点:将字符串看作是char的数组,设置循环,从最后一个元素开始输出,直到输出第一个元素
5.斐波拉契数列
定义:斐波纳契数列以如下被以递归的方法定义:F(0)=1,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)
思路点:函数调用自身进行运算
6.阶乘
定义:一个正整数的阶乘,是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!
思路点:函数调用自身进行运算
现将经常会使用到的基础函数做一总结,供大家分享、自己备用。
1.判断一个数是否为奇数
定义:整数中,能被2整除的数是偶数,不能被2整除的数是奇数
4000
思路点:n%2!=0则为奇数
/// <summary> /// 判断一个整数是不是奇数 /// </summary> /// <param name="n">要判断的整数</param> /// <returns>是否奇数</returns> static bool IsOdd(int n) { //不能被2整除,则为奇数 if (n % 2 != 0) { 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 = 2; i < n; i++) { //如果存在能整除n的数,则返回false if(n%i==0) { 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 = 0; //在大于等于2到小于n的范围内,寻找是否存在能整除n的数 for (int i = 2; i < n; i++) { //如果存在能整除n的数,则sum自增1 if(n%i==0) { sum++; } } //循环结束,如果sum大于0,则代表不是质数,返回false;否则是质数,返回true if (sum > 0) { 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 = 1; for (int i = 1; i < len; i++) { power *= 10; } //定义sum,赋值为各位数的len次幂之和 int sum = 0; for (int j = 1; j <= power; j*=10) { //定义multiple,赋值为各位数的len次幂 int multiple = 1; for (int i = 1; i <=len; i++) { multiple*=n / j % 10; } 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-1; i >= 0; 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 == 1 || n == 2) { return 1; } else { return FibonacciSequence(n - 1) + FibonacciSequence(n - 2); } }
6.阶乘
定义:一个正整数的阶乘,是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!
思路点:函数调用自身进行运算
/// <summary> /// 计算阶乘 /// </summary> /// <param name="str">正整数</param> /// <return>阶乘结果</return>> static int Factorial(int n) { if (n == 1) { return 1; } else { return n*Factorial(n - 1); } }
相关文章推荐
- 程序设计中的数学思维函数总结(代码以C#为例)
- javaScript函数中执行C#代码中的函数方法总结
- Linux内核设计第二周学习总结 完成一个简单的时间片轮转多道程序内核代码
- 用C#设计一个驱动备份的程序代码
- C#生成CHM文件(应用篇)之代码库编辑器(5)【总结、程序、源代码】
- 编写高质量代码改善C#程序的157个建议——建议154:不要过度设计,在敏捷中体会重构的乐趣
- C#程序设计总结
- 《重构--改善既有代码的设计》总结三之重新组织函数
- javaScript函数中执行C#代码中的函数方法总结
- C#WinForm程序常用函数设计
- C#的SerialPort串口程序设计总结
- 2016书单总结--重构改善既有代码的设计--重新组织函数
- 用C#设计一个驱动备份的程序代码
- C#飞行棋小程序设计代码
- 使用C#调用存储过程,用函数合理组织代码,使程序更加的清晰(示例)
- 使用C#调用存储过程,用函数合理组织代码,使程序更加的清晰(示例)
- 数学建模常用Matlab/Lingo/c代码总结系列——Matlab图形绘制函数汇总
- C#报错“OS加载程序锁内执行托管代码,不要尝试在DllMain或映像初始化函数内运行托管代码”的解决方法。
- C#中的泛型程序设计总结
- C#生成CHM文件(应用篇)之代码库编辑器(5)【总结、程序、源代码】