zoukankan      html  css  js  c++  java
  • 学习笔记几个小算法练习:1!n!求和,Fibonacci数列,完全数,水仙花数,回文数

    1. 求1!-n!之和,即1!+2!+3!+...+(n-1)!+n

    代码
    int sum;
    int factorial;
    while (true)
    {
    Console.Write(
    "请输入一个整数数字(输入exit退出): ");
    string input = Console.ReadLine().Trim();
    if (input.ToLower() == "exit")
    {
    break;
    }
    else
    {
    int n = Convert.ToInt32(input);//略掉验证
    sum = 0;
    factorial
    = 1;
    for (int i = 1; i <= n; i++)//控制数字增长
    {
    factorial
    = 1;
    for (int j = 1; j <= i; j++)
    {
    factorial
    *= j;
    }
    sum
    += factorial;
    }
    Console.WriteLine(
    "The factorial of number n is: " + sum.ToString());
    }
    }

    2. 输出Fibonacci数列的前n位数, 如1,1,2,3,5,8....

    代码
    string input = "";
    int n;
    int f1;
    int f2;
    while (true)
    {
    Console.Write(
    "请输入要显示斐波那契数列(Fibonacci)的位数(偶数), 输入exit退出: ");
    input
    = Console.ReadLine().Trim();
    if (input.ToLower() == "exit")
    {
    break;
    }
    else
    {
    n
    = Convert.ToInt32(input);
    f1
    = 1;//f1为第一项, 即第奇数项
    f2 = 1;//f2为偶数位, 即第偶数项
    for (int i = 1; i <= n/2; i++)//斐波那契树立每次出项2个, 所以位数n需要除以2
    {
    Console.Write(f1
    + "," + f2 + ",");
    f1
    = f1 + f2;
    f2
    = f2 + f1;
    }
    Console.Write(
    "\n");
    }
    }

    3. 若一个数恰好等于它的因子之和, 则称这个数为"完全数", 如: 6的因子为1,2,3,因子之和为1+2+3=6; 28的因子为1,2,4,7,14,因子之和为28. 编程求解整数n之内的所有完全数.

    代码
    string input = "";
    int n;
    int sum;
    while (true)
    {
    Console.Write(
    "请输入要输出的完全数的最大值n(输入exit退出)");
    input
    = Console.ReadLine().Trim();
    if (input.ToLower() == "exit")
    {
    break;
    }
    else
    {
    n
    = Convert.ToInt32(input);
    for (int i = 1; i <= n; i++)
    {
    sum
    = i;//暂存当前数字, 例如: 6
    for (int j = 1; j <i; j++)//这里不能取=号
    {
    if (i % j == 0)//找到一个因子
    {
    sum
    -= j;//根据因子之和等于该数来确定的条件. 如: 6 = 1+2+3, 每找到一个因子就可以减去它, 直到结果为0为止
    }
    }
    if (sum == 0)
    {
    Console.Write(i
    + ",");
    }
    }
    }
    }

    4. 水仙花数是一个n(>=3)位数字的数, 它等于每个数字的n次幂之和. 例如, 153是一个水仙花数, 153=1³+5³+3³. 编写程序, 求解小于1000的所有水仙花树.

    代码
    int d3, d2, d1;
    for (int i = 100; i < 1000; i++)
    {
    d3
    = i / 100;//分离出百位, 如:987/100=9(9.87)
    d2 = i / 10 % 10;//分离出十位, 如:987/10=98(98.7) , 98%10 = 8;
    d1 = i % 10;//分离出个位, 如: 987%10 = 7
    if (d3 * 100 + d2 * 10 + d1 == d3 * d3 * d3 + d2 * d2 * d2 + d1 * d1 * d1)
    {
    Console.Write(i
    +",");
    }
    }

    5. 回文整数是指正读和反读相同的整数, 如:1,11,121,1221,12321...等, 编写程序, 输入一个整数并判断它是否为回文整数.

    代码
    string input = "";
    int num;
    int d5, d4, d3, d2, d1;
    while (true)
    {
    Console.Write(
    "输入一个1至99999之间的数(输入exit退出): ");
    input
    = Console.ReadLine().Trim();
    if (input.ToLower() == "exit")
    {
    break;
    }
    else
    {
    num
    = Convert.ToInt32(input);
    if (num <= 99999 && num >= 1)
    {
    d5
    = num / 10000;//分离万位数, 如: 98765 /10000 = 9(9.8765)
    d4 = num / 1000 % 10;//分离千位数, 如: 98765 / 1000 =98(98.765), 98%10 = 8 注: d4 = num%10000/1000; 也可
    d3 = num / 100 % 10;//分离百位数, 如: 98765 / 100 =987(987.65), 987%10 = 7 注: d3 = num%1000/100; 也可
    d2 = num / 10 % 10;//分离十位数, 如: 98765 / 10 =9876(9876.5), 9876%10 = 6 注: d2 = num%100/10; 也可
    d1 = num % 10;//分离个位数, 如: 98765%10 = 5
    if (d5 != 0)
    {
    Console.WriteLine(
    "五位数");
    if (d1 == d5 && d2 == d4)
    {
    Console.WriteLine(num
    + "是回文数! ");
    }
    else
    {
    Console.WriteLine(num
    + "不是回文数! ");
    }
    }
    else if (d4 != 0)
    {
    Console.WriteLine(
    "四位数");
    if (d1 == d4 && d2 == d3)
    {
    Console.WriteLine(num
    + "是回文数! ");
    }
    else
    {
    Console.WriteLine(num
    + "不是回文数! ");
    }
    }
    else if (d3 != 0)
    {
    Console.WriteLine(
    "三位数");
    if (d1 == d3)
    {
    Console.WriteLine(num
    + "是回文数! ");
    }
    else
    {
    Console.WriteLine(num
    + "不是回文数! ");
    }
    }
    else if (d2 != 0)
    {
    Console.WriteLine(
    "二位数");
    if (d1 == d2)
    {
    Console.WriteLine(num
    + "是回文数! ");
    }
    else
    {
    Console.WriteLine(num
    + "不是回文数! ");
    }
    }
    else if (d1 != 0)
    {
    Console.WriteLine(
    "一位数");
    Console.WriteLine(num
    + "是回文数! ");
    }
    }
    else
    {
    Console.WriteLine(
    "输入数字超范围! ");
    }
    }
    }
  • 相关阅读:
    python3 简单爬虫
    springmvc的一个错误
    全栈技术经理——产品管理:产品管理那些事01
    全栈技术经理——团队管理:每周问问你的团队这这些问题 V1.0
    全栈技术经理——自我管理:读《有效管理的五大兵法》有感
    全栈技术经理——团队管理:指导中层管理者日常行动指南
    【原创】SpringBoot & SpringCloud 快速入门学习笔记(完整示例)
    CentOS7环境下SSH端口修改笔记
    CentOS7下挂载硬盘笔记
    权重轮询调度算法(WeightedRound-RobinScheduling)-Java实现3
  • 原文地址:https://www.cnblogs.com/cs_net/p/1832105.html
Copyright © 2011-2022 走看看