首页 技术 正文
技术 2022年11月21日
0 收藏 540 点赞 4,649 浏览 2496 个字

最近以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 - );
}
}
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,075
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,551
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,399
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,176
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,811
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,893