质数算法目标C请解释



嗨,对不起,我的英语不好,我有一个问题,伙计们,我正在学习目标 c,我现在正在学习布尔值,我的问题是:为什么在代码中运行第二个循环时,数字 2 被视为素数,我的意思是,正如我所看到的,p 在第一个循环中取值 2,然后 D 从 2 开始,但随后它说 d

#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
    @autoreleasepool
    {
        int p, d;
        BOOL isPrime;
        for (p = 2; p <= 50; p++)
        {
            isPrime = true;
            for (d = 2; d < p; d++)
            {
                if (p % d == 0)
                isPrime = false;
            }
            if (isPrime == true)
                NSLog(@"%i", p);
        }
    }
    return 0;
}

第一个循环开始 p=2,然后内部循环取d=2,然后检查是否d<p。此条件为,因为d=2 P=2 .这意味着第一个内部循环不会运行,并且在 p 的第一个循环中 isPrime 始终为

素数可以被 1 或自身整除。因此,我们检查 1 和数字之间的所有数字的可除性。

这就是为什么我们从 2 开始直到数字 1

for(d = 2; d < p; d++ )
Prime numbers are the numbers which are not divisible by any other number.They are divisible by itself only (eg 2,3,5,7) 

如果我们只检查到数字的一半,因为超过一半的数字不会除以它。

-(BOOL)checkNumberPrimeNumber:(int)number{
        int i; BOOL flag=false;
        for (i=2; i<number/2; i++) {
            if (number%i==0) {
                flag=true;
                break;
            }
        }
        if (flag==true) {
            NSLog(@"%d is Not Prime Number",number);
        }
        else{
            NSLog(@"%d is Prime Number",number);
        }
        return YES;
    }

最新更新