gpt4 book ai didi

c - 素数计划

转载 作者:太空宇宙 更新时间:2023-11-04 05:13:33 24 4
gpt4 key购买 nike

我想用 C 语言编写一个程序,它将接受用户输入,但我无法理解循环的逻辑。

for ( c = 2 ; c <= n - 1 ; c++ )

程序代码如下:-

#include<stdio.h>
#include<conio.h>

void main()
{
int n, c;

printf("Enter a number to check if it is prime\n");
scanf("%d", &n);

for ( c = 2 ; c <= n - 1 ; c++ )
{
if ( n % c == 0 )
{
printf("%d is not prime.\n", n);
break;
}
}
if ( c == n )
printf("%d is prime.\n", n);

getch();
}

我使用了 for 循环,它将在 for 循环中结束 n - 1 的语句。如果我将输入 11 那么它将以 11 - 1 = 10 结束然后它将如何放弃 if(c == n 的逻辑) { printf("%d", n);?

最佳答案

If I will give the input 11 then it will end up on 11 - 1 = 10 then how it will give up the logic of if(c == n) { printf("%d", n);?

现在正确理解你的 for 循环条件:

for ( c = 2 ; c <= n - 1 ; c++ )
^^^^^^^^^^^^
2 <= 11 - 1 -> True // {for block executes }
3 <= 11 - 1 -> True // {for block executes }
:
:
9 <= 11 - 1 -> True // {for block executes }
10 <= 11 - 1 -> True // {for block executes }
11 <= 11 - 1 -> False breaks //{And Now for block NOT executes}

if (c == n)
^^^^^^
11 == 11 -> True // {if block executes}

根据for循环条件c <= n - 1 , 当 c 时循环中断值变为等于 n .所以如果n等于11 c = 2 的循环条件为真至 c = 10 , 在每次迭代中 cc++ 时递增 1(使用 c 递增)变成 11 (不是说 n )然后条件 c <= n - 1变为假并循环中断。

在 if 条件下(for 循环之后)cn 相比的值.即:

if ( c == n )
// 11 == 11 that is true

n = 11它变成了c = 11如果条件评估为 true 和 printf()与 if 执行相关联。


了解 for 循环仅在 c = n 时终止也很重要。什么时候n是质数,但如果假设n是一个非素数,则 for 循环将因 c 而中断值小于 n - 1由于break;嵌套语句 if阻塞在 for 循环中。

for( c = 2; c <= n - 1; c++ ) 
{
if(n % c == 0)<=="for Non-prime `n`, if condition will be true for some `c < n - 1`"
{ ^^^^^^^^^^^ True
printf("%d is not prime.\n", n);
break; <== "move control outside for-loop"
} // |
} // |
// <---------+ // if break; executes control moves here with c < n - 1
if (c == n)<== "this condition will evaluates FALSE"
^^^^^^^^ False

例如如果n = 8然后在 for 循环的第一次迭代中,值为 c = 2如果条件if(n % c == 0)评估为 if(8 % 2 == 0) == if( 0 == 0) = 真和 break; if block 内的语句将控制移到 for 循环外(如图所示)。

因为这次 for 循环没有因 c <= n - 1 而终止状况但因 if(n % c == 0) 而刹车所以外面的for循环c值小于 n因此 if (c == n)评估为 False。

关于c - 素数计划,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19404638/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com