Objective-C实现信用卡校验(Luhn algorithm)
使用Luhn算法(Luhn algorithm)校验信用卡号的:
1、从卡号最右边开始,由右向左,奇数位数字直接累加;
2、从卡号最右边开始,由右向左,偶数位数字先乘以2(如果乘积为两位数,则将这两位数再次累加或者将其减去9),再求和。
例如:10 = 1 + 0 = 1, 14 = 1 + 4 = 5 等价于 10 - 9 = 1, 14 - 9 = 5;
3、将奇数位总和加上偶数位总和,结果对10取模为0。
例如,卡号是:356827027232780
奇数位和=28
偶数位乘以2(有些要减去9)的结果求和=32。
最后28+32=70 % 10 = 0,信用卡号校验通过。
+ (BOOL)checkCreditCardNumber:(NSString *)cardNum
{
NSAssert(cardNum && cardNum != @"" , @"checkCreditCardNumber: cardNum is nil.");
NSInteger len = [cardNum length];
NSInteger sumNumOdd = 0;
NSInteger sumNumEven = 0;
BOOL isOdd = YES;
for (NSInteger i = len - 1; i >= 0; i--) {
NSInteger num = [cardNum substringWithRange:NSMakeRange(i, 1)].integerValue;
if (isOdd) {//奇数位
sumNumOdd += num;
}else{//偶数位
num = num * 2;
if (num > 9) {
num = num - 9;
}
sumNumEven += num;
}
isOdd = !isOdd;
}
return ((sumNumOdd + sumNumEven) % 10 == 0);
}
分享到:
相关推荐
用Objective-C语言实现了各种设计模式,收集各种例子,方便大家学习和普及设计模式。.zip用Objective-C语言实现了各种设计模式,收集各种例子,方便大家学习和普及设计模式。.zip用Objective-C语言实现了各种设计...
Objective-C语言入门教程&深入浅出,理论实践相结合 Objective-C语言入门教程&深入浅出,理论实践相结合 Objective-C语言入门教程&深入浅出,理论实践相结合 Objective-C语言入门教程&深入浅出,理论实践相结合 ...
本篇文章将深入探讨Objective-C如何实现Socket编程,并结合iPhone和Mac平台的示例进行详细讲解。 首先,Socket是网络编程中的一个接口,它提供了一种在不同计算机之间建立连接并交换数据的方式。在Objective-C中,...
Objective-C是在C语言基础上扩展的,引入了Smalltalk的面向对象特性,如消息传递机制,使得代码更加灵活和可扩展。 "第二讲 数据类型、运算符和表达式"深入讲解了基本的数据类型,包括整型、浮点型、字符型等,以及...
Objective-C是一种广泛用于苹果平台应用程序开发的编程语言,它是C语言的一个超集,并加入了Smalltalk风格的消息传递机制。本篇教程主要面向初学者,介绍了Objective-C的基础知识点和一些核心概念。 1. Objective-C...
这时,Objective-C提供了消息转发机制,允许将原始消息转发给其他对象或执行其他操作,从而实现了高度的灵活性。 #### 类型编码 类型编码是一种在运行时确定对象类型的手段,它对于实现动态方法解析和消息转发非常...
Objective-C提供了多种实现多线程的方式,如NSThread、NSOperationQueue、GCD(Grand Central Dispatch)等。书中会详细介绍这些机制的工作原理、使用方法以及它们之间的区别。例如,NSThread允许开发者创建并控制...
Objective-C语言的许多决策可以在编译和运行时执行。只要有可能,它是动态的。这意味着Objective-C语言不仅需要一个编译器,还需要一个运行时系统来执行编译的代码。Runtime系统是一种用于Objective-C语言的操作系统...
总结来说,在Windows系统下搭建Objective-C开发环境虽然不像在Mac OS X上那样直接便捷,但通过使用GNUstep等工具,我们依然可以实现在Windows系统下的Objective-C开发。希望这份详细的指南能够帮助那些需要或希望在...
1. **Objective-C基础**:Objective-C是在C语言基础上扩展的,因此,理解C语言的基本语法是必要的。Objective-C添加了消息传递机制、类和协议等面向对象特性。 2. **消息传递**:Objective-C中的对象通过发送消息来...
C语言是计算机编程的基础,它是Objective-C的重要基石。在学习Objective-C之前,深入理解C语言的知识点至关重要。C语言以其高效、简洁和灵活性被广泛应用于系统编程、嵌入式开发、游戏引擎等领域。本资料主要涵盖了...
Objective-C是基于C语言的,主要用于构建iOS和macOS应用程序,而Objective-C++则是Objective-C的一个扩展,它引入了C++的特性,使得开发者可以同时利用Objective-C的动态特性和C++的面向对象编程能力。 ### ...
希望这个简单的Objective-C语言教程能够为你提供一个入门的起点。Objective-C是一种面向对象的编程语言,广泛应用于Mac OS和iOS开发。通过学习Objective-C的基本语法、类和对象、控制流程和方法等内容,你将能够编写...
1. **Objective-C基础**:Objective-C是在C语言基础上扩展的,因此它包含了C的所有特性。书中会讲解基本的数据类型、控制结构、函数和指针等基础知识,同时介绍Objective-C特有的动态类型和消息传递机制。 2. **...
《Objective-C基础教程》是一本面向初学者的编程书籍,主要涵盖了Objective-C语言的基本概念、语法和编程实践,尤其适合那些想要踏入iOS应用开发领域的学习者。Objective-C是Apple公司开发的面向对象的编程语言,它...
Objective-C语言和Cocoa框架之间的关系,可以用一句话来概括:Objective-C是实现Cocoa框架应用程序的工具,而Cocoa框架是Objective-C在苹果平台上开发应用程序的核心。 在今天的开发实践中,Objective-C已经逐渐被...
在Objective-C中实现RSA算法,可以提供数据的安全传输和存储,确保用户信息不被非法获取。 RSA算法基于两个核心数学概念:大整数因子分解的困难性和欧拉函数的性质。它的主要步骤包括密钥对的生成、加密和解密: 1...
1. **Objective-C基础**:Objective-C是在C语言基础上扩展的,添加了面向对象特性。它的基础包括类、对象、消息传递等概念。类定义了对象的属性和行为,对象则是类的实例。消息传递是Objective-C的核心,通过`...
《Objective-C 程序设计(第4版)》作者假设读者没有面向对象程序语言或者C语言(Objective-C基础)编程经验,因此,初学者和有经验的程序员都可以使用这本《Objective-C 程序设计(第4版)》学习Objective-C。...
本项目提供的"基于Objective-C语言实现图文混排的编辑器源码"是为iOS应用设计的一个功能强大的编辑器,允许用户在单个视图中自由组合文字和图像,为移动应用的内容创建提供了丰富的可能性。 首先,我们要理解...