[C#] C# 通过Luhn算法验证信用卡卡号是否有效 →→→→→进入此内容的聊天室

来自 , 2019-05-27, 写在 C#, 查看 109 次.
URL http://www.code666.cn/view/811be42d
  1. using System;
  2. using System.Linq;
  3.  
  4. namespace Luhn
  5. {
  6.     class Program
  7.     {
  8.         public static bool luhn(long n)
  9.         {
  10.             long nextdigit, sum = 0;            
  11.             bool alt = false;            
  12.             while (n != 0)
  13.             {                
  14.                 nextdigit = n % 10;
  15.                 if (alt)
  16.                 {
  17.                     nextdigit *= 2;
  18.                     nextdigit -= (nextdigit > 9) ? 9 : 0;
  19.                 }
  20.                 sum += nextdigit;
  21.                 alt = !alt;
  22.                 n /= 10;
  23.             }
  24.             return (sum % 10 == 0);
  25.         }
  26.  
  27.         public static bool luhnLinq(long n)
  28.         {
  29.             string s = n.ToString();
  30.             return s.Select((c, i) => (c - '0') << ((s.Length - i - 1) & 1)).Sum(n => n > 9 ? n - 9 : n) % 10 == 0;
  31.         }
  32.  
  33.         static void Main(string[] args)
  34.         {            
  35.             long[] given = new long[] {49927398716, 49927398717, 1234567812345678, 1234567812345670};
  36.             foreach (long num in given)
  37.             {
  38.                 string valid = (luhn(num)) ? " is valid" : " is not valid";
  39.                 Console.WriteLine(num + valid);
  40.             }
  41.  
  42.         }
  43.     }
  44. }
  45.  
  46.  
  47. //csharp/7113

回复 "C# 通过Luhn算法验证信用卡卡号是否有效"

这儿你可以回复上面这条便签

captcha