对不起我的英语不好,我有一个问题,我正在学习目标c,我现在正在学习布尔值,我的问题是:为什么在代码中运行第二个循环时,数字2被采用作为素数,我的意思是,正如我所看到的那样,p在第一个循环中取值2,然后d从2开始,然后它说d< p,我认为这是p-1(2-1 = 1),所以代码如何工作,它没有意义,我理解为什么它适用于大于2的任何其他数字,但我不明白为什么它适用于2号!
#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;
}
答案 0 :(得分:1)
第一个循环开始p = 2,然后内循环取d=2
,然后检查是否d<p
。此条件为 false ,因为d=2 P=2
。这意味着第一个内循环不会运行,并且isPrime在p的第一个循环中总是 true 。
答案 1 :(得分:0)
素数可以被1或其自身整除。 因此,我们检查1和数字之间所有数字的可分性。
这就是为什么我们从2开始直到数字-1
for(d = 2; d < p; d++ )
答案 2 :(得分:0)
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;
}