6-1-水仙花数(最少是3位数)
是指一个n位数(n≥3),它的每个位上的数字的n次幂之和等于它本身
例:在控制台中输出1000以内的所有水仙花数
查找问题
查找样本:100-999
查找目标:是不是水仙花数
找到后操作:输出目标数据
实现代码:
for (int i = 100; i <= 999; i++)
{
/* if( i 是不是一个水仙花数)
{
Console.WiteLine(i);
}
*/
//注:如何判断一个三位数i是不是水仙花数
int a = i / 100 % 10;
int b = i / 10 % 10;
int c = i / 1 % 10;
if (a * a * a + b * b * b + c * c * c ==i)
{
Console.WriteLine(i);
}
}
→ 输出i的值为153,370,371,407
是指一个n位数(n≥3),它的每个位上的数字的n次幂之和等于它本身
例:在控制台中输出1000以内的所有水仙花数
查找问题
查找样本:100-999
查找目标:是不是水仙花数
找到后操作:输出目标数据
实现代码:
for (int i = 100; i <= 999; i++)
{
/* if( i 是不是一个水仙花数)
{
Console.WiteLine(i);
}
*/
//注:如何判断一个三位数i是不是水仙花数
int a = i / 100 % 10;
int b = i / 10 % 10;
int c = i / 1 % 10;
if (a * a * a + b * b * b + c * c * c ==i)
{
Console.WriteLine(i);
}
}
→ 输出i的值为153,370,371,407
6.2-分解质因数
任何一个合数(0和1除外),都可以分解为多个质数相乘
合数:除了1和它本身还能被其它数整除
代码示例:
//提示用户输入一个合数,將合数保存在变量number中
int number;
while (true)
{
Console.Write("请输入一个合数(大于1):");
number = int.Parse(Console.ReadLine());
if (number <= 1)
{
Console.Write("输入有误,重新输入大于1的数字,按回车键继续");
Console.ReadLine();
Console.Clear();
}
else
{
bool isFind = false;
for (int i = 2; i < number; i++)
{
if (number % i == 0)
{
isFind = true;
break;
}
}
if (isFind)
{
//不是质数
break;
}
else
{
//是质数
Console.Write("输入有误,输入的数字必须是合数,按回车键继续");
Console.ReadLine();
Console.Clear();
}
}
}
//2、得到变量number所有的质因数,把它们保存到集合factor中
List<int> factors = new List<int>();
int n = number;
while (n != 1)
{
for (int i = 2; i <= n; i++)
{
if(n % i == 0)
{
n = n / i;
factors.Add(i);
break;
}
}
}
//输出结果
string result = number + "=";
for (int i = 0; i < factors.Count; i++)
{
result = result + factors[i];//可以简写为result += factors[i]
if (i < factors.Count - 1)
{
result += "x";
}
}
Console.Write(result);
Console.ReadLine();
6-3-斐波拉契数列
例:
1,1,2,3,5, 8, 13……
前两位 = 1
第 i 为 = 第 i-1 位 + 第 i - 2 位
代码示例
//获取用户输入的长度,保存到变量 n 中
Console.Write("请输入斐波拉契数列的长度:");
int n = int.Parse(Console.ReadLine());
//创建长度为 n 的数字,依次保存没一位数字
int[] number = new int[n];
//给每一项赋值
for (int i = 0; i < number.Length; i++)
{
if (i <= 1)
{
number[i] = 1;
}
else
{
number[i] = number[i - 1] + number[i - 2];
}
}
//遍历输出数字内容
foreach (int item in number)
{
Console.Write(item + "\t");
}
Console.ReadLine();
6-4-买桃问题
代码示例:
桃子3元一个,3个核桃可以换一个桃子,你拥有100元,最多可以吃到多少个桃子
int money = 100, price = 3, exchange = 3;
int eated, kernel;
eated = money / price;
kernel = eated;
while (kernel >= exchange)
{
//换取桃子
int peach = kernel / exchange;
//计算剩余桃核
int left = kernel % exchange;
//吃掉桃子
eated += peach;
//计算当前拥有的桃核
kernel = left + peach;
}
Console.Write("最多可以吃到" + eated + "个桃子");
Console.ReadLine();
6-5- 哥德巴赫猜想
代码示例:
//哥德巴赫猜想:任何一个大于2的偶数,都可以被分解为两个质数相加
//提示并获取用户输入的偶数,保存到变量number中
int number;
while(true)
{
Console.Write("请输入一个大于2的偶数:");
number = int.Parse(Console.ReadLine());
if(number <= 2 || number % 2 != 0)
{
Console.Write("你输入的有误,请重新输入一个大于2的偶数:");
Console.ReadLine();
Console.Clear();
}
else
{
break;
}
}
//分解number,找到两个质数,他们的和等于number,把它们分别保存在变量 i 和 j 中
//i: 2—number - 2
int i, j = 0;
for ( i = 2; i < number - 1; i++)
{
j = number - i;
bool isFind = false;
for (int k = 2; k < i; k++)
{
if (i % k == 0)
{
isFind = true;
break;
}
}
if (isFind)
{
//i不是质数
continue;
}
else
{
// i 是质数
}
isFind = false;
for (int k = 2; k < j; k++)
{
if (j % k == 0)
{
isFind = true;
break;
}
}
if (isFind)
{
//j 不是质数
}
else
{
//j是质数
break;
}
}
//输出结果
string result = number + "=" + i + "+" + j;
Console.WriteLine(result);
Console.ReadLine();
6-6-反序输出
反序输出的完整实现:
//获取用户输入,將用户的输入保存到挺普通中
Console.Write("请输入一个字符串:");
string input = Console.ReadLine();
反序变量input,将其字符保存到reverse中
string reverse = "" ;
for(int i = input.Length - 1; i--)
{
reverse += input[i]
}
输出结果:
Console.Write(reverse + ":是串符字的入输你");
6-7-控制台日历控制台日立
任何一个合数(0和1除外),都可以分解为多个质数相乘
合数:除了1和它本身还能被其它数整除
代码示例:
//提示用户输入一个合数,將合数保存在变量number中
int number;
while (true)
{
Console.Write("请输入一个合数(大于1):");
number = int.Parse(Console.ReadLine());
if (number <= 1)
{
Console.Write("输入有误,重新输入大于1的数字,按回车键继续");
Console.ReadLine();
Console.Clear();
}
else
{
bool isFind = false;
for (int i = 2; i < number; i++)
{
if (number % i == 0)
{
isFind = true;
break;
}
}
if (isFind)
{
//不是质数
break;
}
else
{
//是质数
Console.Write("输入有误,输入的数字必须是合数,按回车键继续");
Console.ReadLine();
Console.Clear();
}
}
}
//2、得到变量number所有的质因数,把它们保存到集合factor中
List<int> factors = new List<int>();
int n = number;
while (n != 1)
{
for (int i = 2; i <= n; i++)
{
if(n % i == 0)
{
n = n / i;
factors.Add(i);
break;
}
}
}
//输出结果
string result = number + "=";
for (int i = 0; i < factors.Count; i++)
{
result = result + factors[i];//可以简写为result += factors[i]
if (i < factors.Count - 1)
{
result += "x";
}
}
Console.Write(result);
Console.ReadLine();
6-3-斐波拉契数列
例:
1,1,2,3,5, 8, 13……
前两位 = 1
第 i 为 = 第 i-1 位 + 第 i - 2 位
代码示例
//获取用户输入的长度,保存到变量 n 中
Console.Write("请输入斐波拉契数列的长度:");
int n = int.Parse(Console.ReadLine());
//创建长度为 n 的数字,依次保存没一位数字
int[] number = new int[n];
//给每一项赋值
for (int i = 0; i < number.Length; i++)
{
if (i <= 1)
{
number[i] = 1;
}
else
{
number[i] = number[i - 1] + number[i - 2];
}
}
//遍历输出数字内容
foreach (int item in number)
{
Console.Write(item + "\t");
}
Console.ReadLine();
6-4-买桃问题
代码示例:
桃子3元一个,3个核桃可以换一个桃子,你拥有100元,最多可以吃到多少个桃子
int money = 100, price = 3, exchange = 3;
int eated, kernel;
eated = money / price;
kernel = eated;
while (kernel >= exchange)
{
//换取桃子
int peach = kernel / exchange;
//计算剩余桃核
int left = kernel % exchange;
//吃掉桃子
eated += peach;
//计算当前拥有的桃核
kernel = left + peach;
}
Console.Write("最多可以吃到" + eated + "个桃子");
Console.ReadLine();
6-5- 哥德巴赫猜想
代码示例:
//哥德巴赫猜想:任何一个大于2的偶数,都可以被分解为两个质数相加
//提示并获取用户输入的偶数,保存到变量number中
int number;
while(true)
{
Console.Write("请输入一个大于2的偶数:");
number = int.Parse(Console.ReadLine());
if(number <= 2 || number % 2 != 0)
{
Console.Write("你输入的有误,请重新输入一个大于2的偶数:");
Console.ReadLine();
Console.Clear();
}
else
{
break;
}
}
//分解number,找到两个质数,他们的和等于number,把它们分别保存在变量 i 和 j 中
//i: 2—number - 2
int i, j = 0;
for ( i = 2; i < number - 1; i++)
{
j = number - i;
bool isFind = false;
for (int k = 2; k < i; k++)
{
if (i % k == 0)
{
isFind = true;
break;
}
}
if (isFind)
{
//i不是质数
continue;
}
else
{
// i 是质数
}
isFind = false;
for (int k = 2; k < j; k++)
{
if (j % k == 0)
{
isFind = true;
break;
}
}
if (isFind)
{
//j 不是质数
}
else
{
//j是质数
break;
}
}
//输出结果
string result = number + "=" + i + "+" + j;
Console.WriteLine(result);
Console.ReadLine();
6-6-反序输出
反序输出的完整实现:
//获取用户输入,將用户的输入保存到挺普通中
Console.Write("请输入一个字符串:");
string input = Console.ReadLine();
反序变量input,将其字符保存到reverse中
string reverse = "" ;
for(int i = input.Length - 1; i--)
{
reverse += input[i]
}
输出结果:
Console.Write(reverse + ":是串符字的入输你");