最近以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瞎逛,偶然看到这篇文章,居然读得懂,于是就翻译了一下,当练习英语,同时增强对文章的理解,发现再次翻译对于文章的一些细节问题又有更好的理解.下面是翻译内容,虽然 ...
随机推荐
-
iOS开发 - AVPlayer实现流音频边播边存
边播边下有三套左右实现思路,本文使用AVPlayer + AVURLAsset实现. 概述 1. AVPlayer简介 AVPlayer存在于AVFoundation中,可以播放视频和音频,可以理解为 ...
-
BZOJ1576 [Usaco2009 Jan]安全路经Travel
首先用Dijkstra做出最短路生成树,设dis[p]为1到p点的最短路长度 对于一条不在生成树上的边u -> v,不妨设fa为u.v的lca 则一fa到v的路径上的任意点x都可以由u达到,走的 ...
-
实例介绍Cocos2d-x中Box2D物理引擎:使用关节
下面我们将使用Box2D物理引擎技术进行重构.使得关节能够掌握如何在Box2D使用关节约束.HelloWorldScene.cpp中与使用关节的相关代码如下: void HelloWorld::add ...
-
数据文件 和日志文件 收缩 Sql Server
A. 将数据文件收缩到指定的目标大小 以下示例将 UserDB 用户数据库中名为 DataFile1 的数据文件的大小收缩到 7 MB. 复制 USE UserDB; GO DBCC SHRINKFI ...
-
C 连接mysql VC的步骤
初学C,看到C 连接mysql的教程不是很多,遇到很多的问题,看过许多盟友的解决方法,有点模糊(对我这个菜鸟来说),下面贴出具体步骤,一起学习: 1.C连接mysql的方法:C ,C ++ ,ODBC ...
-
paloalto防火墙安装内容和软件更新
1.为了确保您始终不会受到最新威胁(包括尚未发现的威胁)的攻击,您必须确保防火墙始终具有 Palo Alto Networks 发布的最新更新内容及软件. • Antivirus(防病毒)— 包括新的 ...
-
C# 动态生成类 枚举等
private void GenerateCode() { /*注意,先导入下面的命名空间 using System.CodeDom using System.CodeDom.Compiler; us ...
-
hdu 3022 Sum of Digits
http://acm.hdu.edu.cn/showproblem.php?pid=3022 题意: 最多不超过10000组数据,每组数据给定两个数n,m,求一个最小的数,使得该数每一位之和等于n,每 ...
-
从gentoo回归Arch,上组图
Arch一直在我笔记本里边,只是玩gentoo时我不进Arch了,现在回归Arch,升级到了最新,用上了gentoo的最新的2.6.31内核(自己配置,无initrd),引导程序用的grub4dos: ...
-
Git Note - git tag
git tag is used to create labels, usually for version numbers. Format: git tag <TagName> <r ...