基础算法

  1. 在主方法中调用
  2.  

                                                                                                                                                                                  n的阶乘

  3.  1题 从控制台接收用户输入的一个正整数n,请输出n的阶乘结果
  4.   public static void Tinv()
            {
                Console.WriteLine("请输入一个正整数");
                long item = long.Parse(Console.ReadLine());
                //声明一个变量
                long num = 1;
                for (long i = 1; i <=item; i++)
                {
                    //累乘法
                    num = num * i;
    
                }
                //输出
                Console.WriteLine(num);
            }

     

  5.           回文数算法
    1. 2题 从控制台接收用户输入的一个正整数n,请判断n是不是回文数,结果输出为true或false。

        

 public static void Pdnum()
        {
            Console.WriteLine("请输入一个正整数");
            string num = Console.ReadLine();
            //默认输入的是回文数字
            bool judge = true;
            //num.Length/2这里是对半比  如:10的一半就是5  5和5对比
            for (int i = 0; i < num.Length/2; i++)
            {
                #region   算法原理
                //num[i]for循环第i次 不等于 倒数第二个数时
                //例如10 for循环/2了就 num的值5 等于1 2 3 4 5  
                //而这时for循环需要执行五次,当第一次循环时i=0 带入运算得出4是相等的则继续推
                //否则不相等则会进入到if语句返回false 得出结果
                #endregion
                if (num[i]!=num[num.Length-1-i])
                {
                    judge = false;
                    break;
                }
            }
            Console.WriteLine(judge);
        }

 

                                                          水仙花数!

  1. 从控制台接收用户输入的两个正整数i和j(不能保证i一定小于j),请找出从i到j之间所有的水仙花水,若一个都没有,输出“不存在”。

                

        

 public static void Narci()
        {
            Console.WriteLine("请输入两个正整数");
            Console.WriteLine("第一个正整数");
            int num1 = int.Parse(Console.ReadLine());
            Console.WriteLine("第二个正整数");
            int num2 = int.Parse(Console.ReadLine());
            if (num1>num2)
            {
                //转化为了让小的数在前大的在后
                int num3 = num1;
                num1 = num2;
                num2 = num3;
                //这时num2>num1
            }
            //默认是不存在
            bool judge = false;
            for (int i = num1; i < num2; i++)
            {
                if (i>=100&&i<=999)
                {
                    //求百位上的数
                    int b = i / 100;
                    int s = i / 10 % 10 ;
                    int g = i % 10;
                    if (b*b*b+s*s*s+g*g*g==i)
                    {
                        Console.WriteLine(i);
                        judge = true;
                    } 
                }
                //输入数字小于100的情况下
                else if (i >= 0 && i <= 99)
                {
                    int s = i / 10 % 10;
                    int g = i % 10;
                    if (s * s * s + g * g * g == i)
                    {
                        Console.WriteLine(i);
                        judge = true;
                    }
                }
            }
            //如果上面循环执行完了还是没找到水仙花数
            if (judge==false)
            {
                Console.WriteLine("不存在");
            }
        }

 

 

  斐波那契序列算法

  1. 接收用户输入的一个正整数n,请输出斐波那契序列第n-1项、第n项和第n+1项。
【参考测试用例】
输入 输出
5      3  8 5
10      34 55 89
    主方法调用调    Rgth()
       public static void Rgth()
        {
            Console.WriteLine("请输入一个正整数");
            int Bi = int.Parse(Console.ReadLine());
            Console.Write(F(Bi - 1)+"\t");//第n-1项
            Console.Write(F(Bi)+"\t");//第n项
            Console.Write(F(Bi+1));//第n+1项

        }
        //公式方法
        public static int F(int n)
        {
            //当n小于3时  直接给出返回值
            if (n < 3)
            {
                return 1;
            }
            //当n等于3时,直接给出返回值
            if (n == 3)
            {
                return 2;
            }
            //重点在F(n - 1) + F(n - 2)  公式
            return F(n - 1) + F(n - 2);//递归调用
        }

 

                                                                                                                                       随机生成算法序列

  1. 考虑如下的序列生成算法:从整数 n 开始,如果 n 是偶数,把它除以 2;如果 n 是奇数,把它乘 3 加1。用新得到的值重复上述步骤,直到 n = 1 时停止。例如,n = 22 时该算法生成的序列是:
                                                                22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1
人们猜想(没有得到证明)对于任意整数 n,该算法总能终止于 n = 1这个猜想对于至少 1 000 000内的整数都是正确的。请通过编码实现上述算法,接收用户输入的一个正整数n,套入上述算法中,将生成的序列输出控制台。

 

 

    public static void Sing()
        {
            Console.WriteLine("请输入一个正整数");
            int num = int.Parse(Console.ReadLine());
            //这里是前面输入的数,算到数列里 所以这里添加个输出
            Console.Write(num + "  ");
            while (num!=1)
            {
                //如果是偶数
                if (num%2==0)
                {
                    //让它迭代
                    num = num / 2;
                }
                //不是偶数 是奇数
                else
                {
                    //让它迭代
                    num = num * 3+1;
                }
                Console.Write(num + "  ");  //输出
            }
        }

 

 

                      /银行卡验证
  1. 当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过。
该校验的过程:
1、从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。
2、从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积 为两位数,则将其减去9),再求和。
3、将奇数位总和加上偶数位总和,结果应该可以被10整除。
例如,卡号是:5432123456788881
 
则,奇数位和=35
偶数位乘以2(有些要减去9)的结果:1 6 2 6 1 5 7 7,求和=35。
最后35+35=70 可以被10整除,认定校验通过。

 

        public static void Yith()
        {
            Console.WriteLine("请输入卡号:");
            string evo = Console.ReadLine();
            //声明变量用于for循环里的判断偶数情况 从1开始
            int k = 1;
            //声明接收偶数的和
            int suma = 0;
            //声明接收奇数的和
            int sumb = 0;
            //是逆向从最后一位数开始 所以evo.Length - 1 位数逐减   i--
            for (int i = evo.Length - 1; i >= 0; i--, k++)
            {
                //当推到偶数求余=0时
                if (k%2==0)
                {
                    //第evo[i]位数 .int接收 转成字符串
                    int sums = int.Parse(evo[i].ToString()) * 2;
                    //三目运算  如果sums大于9 则就减去9 没大于9就等于原来的数
                    int s = sums > 9 ? sums - 9 : sums;
                    //迭代
                    suma = suma + s;
                }
                //一直循环遇到奇数时
                else
                {
                    //把奇数迭代相加          第几个数
                    sumb = sumb + int.Parse(evo[i].ToString());
                }
            }
            //判断奇偶和对10求余
            if ((suma+sumb)%10==0)
            {
                Console.WriteLine("成功");
            }
            else
            {
                Console.WriteLine("失败");
            }
        }

 

 

 

posted @ 2022-10-26 00:17  花是花树是树  阅读(148)  评论(0)    收藏  举报