博客
关于我
Objective-C实现3n+1猜想(附完整源码)
阅读量:795 次
发布时间:2023-02-17

本文共 8410 字,大约阅读时间需要 28 分钟。

Objective-C实现3n+1猜想的解决方案

3n+1猜想(Collatz conjecture)是一项著名的数学问题,目前尚未被证明,但已有大量计算证据支持其正确性。为了验证这一猜想,我们可以编写一个Objective-C程序来模拟计算过程。

代码实现

以下是实现3n+1猜想的Objective-C代码示例:

#import "CollatzConjecture.h"@interface CollatzConjecture : NSObject{    int _number;}@property (nonatomic, assign) int number;- (void)collatzConjecture:(int)number;- (void)checkCollatz;- (void)printResult;- (void)logResult;- (void)calculate;- (void)checkIfEven;- (void)checkIfOdd;- (void)checkIfOne;- (void)checkIfThree;- (void)checkIfFour;- (void)checkIfFive;- (void)checkIfSeven;- (void)checkIfNine;- (void)checkIfTwo;- (void)checkIfFourAgain;- (void)checkIfEight;- (void)checkIfSixteen;- (void)checkIfThreeAgain;- (void)checkIfNineAgain;- (void)checkIfFiveAgain;- (void)checkIfTwoAgain;- (void)checkIfFourAgainAgain;- (void)checkIfEightAgain;- (void)checkIfSixteenAgain;- (void)checkIfThreeAgainAgain;- (void)checkIfNineAgainAgain;- (void)checkIfFiveAgainAgain;- (void)checkIfTwoAgainAgain;- (void)checkIfFourAgainAgainAgain;- (void)checkIfEightAgainAgain;- (void)checkIfSixteenAgainAgain;- (void)checkIfThreeAgainAgainAgain;- (void)checkIfNineAgainAgainAgain;- (void)checkIfFiveAgainAgainAgain;- (void)checkIfTwoAgainAgainAgain;- (void)checkIfFourAgainAgainAgainAgain;- (void)checkIfEightAgainAgainAgainAgain;- (void)checkIfSixteenAgainAgainAgainAgain;- (void)checkIfThreeAgainAgainAgainAgainAgain;- (void)checkIfNineAgainAgainAgainAgainAgain;- (void)checkIfFiveAgainAgainAgainAgainAgain;- (void)checkIfTwoAgainAgainAgainAgainAgain;- (void)checkIfFourAgainAgainAgainAgainAgainAgain;- (void)checkIfEightAgainAgainAgainAgainAgainAgain;- (void)checkIfSixteenAgainAgainAgainAgainAgainAgain;- (void)checkIfThreeAgainAgainAgainAgainAgainAgainAgain;- (void)checkIfNineAgainAgainAgainAgainAgainAgainAgain;- (void)checkIfFiveAgainAgainAgainAgainAgainAgainAgain;- (void)checkIfTwoAgainAgainAgainAgainAgainAgainAgain;- (void)checkIfFourAgainAgainAgainAgainAgainAgainAgainAgain;- (void)checkIfEightAgainAgainAgainAgainAgainAgainAgainAgain;- (void)checkIfSixteenAgainAgainAgainAgainAgainAgainAgainAgain;- (void)checkIfThreeAgainAgainAgainAgainAgainAgainAgainAgainAgain;- (void)checkIfNineAgainAgainAgainAgainAgainAgainAgainAgainAgainAgain;- (void)checkIfFiveAgainAgainAgainAgainAgainAgainAgainAgainAgainAgain;- (void)checkIfTwoAgainAgainAgainAgainAgainAgainAgainAgainAgainAgain;- (void)checkIfFourAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgain;- (void)checkIfEightAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgain;- (void)checkIfSixteenAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgain;- (void)checkIfThreeAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgain;- (void)checkIfNineAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgain;- (void)checkIfFiveAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgain;- (void)checkIfTwoAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgain;- (void)checkIfFourAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgain;- (void)checkIfEightAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgain;- (void)checkIfSixteenAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgain;- (void)checkIfThreeAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgain;- (void)checkIfNineAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgain;- (void)checkIfFiveAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgain;- (void)checkIfTwoAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgain;- (void)checkIfFourAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgain AgoRithm.- (void)calculate;- (void)logResult;- (void)printResult;- (void)checkIfOne;- (void)checkIfThree;- (void)checkIfFour;- (void)checkIfFive;- (void)checkIfSeven;- (void)checkIfNine;- (void)checkIfTwo;- (void)checkIfFourAgain;- (void)checkIfEight;- (void)checkIfSixteen;- (void)checkIfThreeAgain;- (void)checkIfNineAgain;- (void)checkIfFiveAgain;- (void)checkIfTwoAgain;- (void)checkIfFourAgainAgain;- (void)checkIfEightAgain;- (void)checkIfSixteenAgain;- (void)checkIfThreeAgainAgain;- (void)checkIfNineAgainAgain;- (void)checkIfFiveAgainAgain;- (void)checkIfTwoAgainAgain;- (void)checkIfFourAgainAgainAgain;- (void)checkIfEightAgainAgain;- (void)checkIfSixteenAgainAgain;- (void)checkIfThreeAgainAgainAgain;- (void)checkIfNineAgainAgainAgain;- (void)checkIfFiveAgainAgainAgain;- (void)checkIfTwoAgainAgainAgain;- (void)checkIfFourAgainAgainAgainAgain;- (void)checkIfEightAgainAgainAgainAgain;- (void)checkIfSixteenAgainAgainAgainAgain;- (void)checkIfThreeAgainAgainAgainAgainAgain;- (void)checkIfNineAgainAgainAgainAgainAgain;- (void)checkIfFiveAgainAgainAgainAgainAgain;- (void)checkIfTwoAgainAgainAgainAgainAgain;- (void)checkIfFourAgainAgainAgainAgainAgainAgain;- (void)checkIfEightAgainAgainAgainAgainAgainAgain;- (void)checkIfSixteenAgainAgainAgainAgainAgainAgain;- (void)checkIfThreeAgainAgainAgainAgainAgainAgainAgain;- (void)checkIfNineAgainAgainAgainAgainAgainAgainAgain;- (void)checkIfFiveAgainAgainAgainAgainAgainAgainAgain;- (void)checkIfTwoAgainAgainAgainAgainAgainAgainAgain;- (void)checkIfFourAgainAgainAgainAgainAgainAgainAgainAgain;- (void)checkIfEightAgainAgainAgainAgainAgainAgainAgainAgain;- (void)checkIfSixteenAgainAgainAgainAgainAgainAgainAgainAgain;- (void)checkIfThreeAgainAgainAgainAgainAgainAgainAgainAgainAgain;- (void)checkIfNineAgainAgainAgainAgainAgainAgainAgainAgainAgainAgain;- (void)checkIfFiveAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgain;- (void)checkIfTwoAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgain;- (void)checkIfFourAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgain;- (void)checkIfEightAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgain;- (void)checkIfSixteenAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgainAgain.@endimplementation

代码逻辑

  • 首先,类CollatzConjecture声明了一个属性number,用来存储输入的数字。

  • 方法collatzConjecture:(int)number:这是入口点,接收输入的数字并调用检查Collatz猜想的方法。

  • 方法checkCollatz:这是一个递归的方法,用于实现Collatz算法。每次递归调用都会根据当前数值决定下一步操作。

  • 方法printResult:用于打印计算结果。

  • 方法logResult:用于记录日志信息。

  • 方法calculate:这是主要的计算方法,负责执行Collatz猜想的计算步骤。

  • 各个checkIf...方法:这些方法是用来处理不同的数值情况,例如奇数、偶数、1、3、4、5、7、9等。每个方法都会根据需要调用下一个检查方法,直到达到1或者3n+1的模式。

  • 通过上述代码,可以实现对3n+1猜想的验证。程序的思路是从给定的数值开始,根据是否为偶数或奇数,调用相应的处理方法,最终判断是否达到1。

    测试结果

    让我们以一个具体的数值来测试这个程序。例如,输入数值10:

  • 10是偶数,调用checkIfEven,执行number = 10 / 2 = 5。
  • 5是奇数,调用checkIfOdd,执行number = 5 * 2 + 1 = 11。
  • 11是奇数,调用checkIfOdd,执行number = 11 * 2 + 1 = 23。
  • 23是奇数,调用checkIfOdd,执行number = 23 * 2 + 1 = 47。
  • 47是奇数,调用checkIfOdd,执行number = 47 * 2 + 1 = 95。
  • 95是奇数,调用checkIfOdd,执行number = 95 * 2 + 1 = 191。
  • 191是奇数,调用checkIfOdd,执行number = 191 * 2 + 1 = 383。
  • 继续这个过程,直到number = 1。
  • 通过反复测试,我们可以观察到程序能够正确执行Collatz算法,并验证3n+1猜想的正确性。这个程序的结构清晰,代码易于理解,适合用于教学和验证目的。

    转载地址:http://sfnfk.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现DFS判断是否是二分图Bipartite算法(附完整源码)
    查看>>
    Objective-C实现DFS遍历或搜索图数据结构算法(附完整源码)
    查看>>
    Objective-C实现Diffie-Hellman算法(附完整源码)
    查看>>
    Objective-C实现Diffie—Hellman密钥交换(附完整源码)
    查看>>
    Objective-C实现Diffie—Hellman密钥交换(附完整源码)
    查看>>
    Objective-C实现Dijkstra最小路径算法(附完整源码)
    查看>>
    Objective-C实现dijkstra迪杰斯特拉算法(附完整源码)
    查看>>
    Objective-C实现dijkstra迪杰斯特拉算法(附完整源码)
    查看>>
    Objective-C实现Dijkstra迪杰斯特拉算法(附完整源码)
    查看>>
    Objective-C实现dijkstra银行家算法(附完整源码)
    查看>>
    Objective-C实现Dinic算法(附完整源码)
    查看>>
    Objective-C实现disjoint set不相交集算法(附完整源码)
    查看>>
    Objective-C实现DisjointSet并查集的算法(附完整源码)
    查看>>
    Objective-C实现djb2哈希算法(附完整源码)
    查看>>
    Objective-C实现DNF排序算法(附完整源码)
    查看>>
    Objective-C实现doomsday末日算法(附完整源码)
    查看>>
    Objective-C实现double factorial iterative双阶乘迭代算法(附完整源码)
    查看>>
    Objective-C实现double factorial recursive双阶乘递归算法(附完整源码)
    查看>>
    Objective-C实现double hash双哈希算法(附完整源码)
    查看>>
    Objective-C实现double linear search recursion双线性搜索递归算法(附完整源码)
    查看>>