c - 返回在这里如何运作?

标签 c int boolean return

新问题:但是为什么表达式来自 n == number,来自 firstFactorPtr == factor1?

谁能给我解释一下,这是如何工作的:

return ( factor == 1 );

这会返回“main”和“factor == 1”,为什么“isPrime”会返回 true?
如果我们使用“*firstFactorPtr”和“*secondFactorPtr”,为什么会返回 false? 它正在搜索质数和非质数。
“main”中没有“int factor”,怎么用任意表达式返回“main”?

 #include <stdio.h>
 #include <stdbool.h>
 #include <math.h>


    bool Factor( int number, int *firstFactorPtr, int *secondFactorPtr );

    int main(int argc, const char * argv[])
   {
    int n;

for ( n = 5; n <= 20; n++ ) {
    bool isPrime;
    int factor1, factor2;
    
    isPrime = Factor( n, &factor1, &factor2 );
    if ( isPrime )
        printf( "the number %d is prime\n", n );
    else
        printf( "the number %d has %d and %d as factors\n", n, factor1, factor2 );
    }

  return 0;
 }


 bool Factor( int number, int *firstFactorPtr, int *secondFactorPtr )
 {
if ( number < 1 )
    return false;   

int factor; 
for ( factor = sqrt(number); factor > 1; factor-- ) {
    if ( (number % factor) == 0 ) {
        break;
    }
}

*firstFactorPtr = factor;
*secondFactorPtr = number / factor;
return ( factor == 1 );
 }

最佳答案

它返回 boolean 表达式“因子等于 1”的结果,即 truefalse .

这个例程还有一个副作用:它将找到的阶乘存储在 header 中两个 int * 指向的列表中。

本质上,它返回 true如果因子是素数——循环一直倒数到“1”——,false否则。

关于c - 返回在这里如何运作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54725908/

相关文章:

c - 我正在尝试用用户输入填充一个数组,我已经提示用户现在我正在尝试编写一个 fillArray 函数

用 C 计算文件中的数字

java - 尝试将多个数字传递到数组中

r - 查找一系列 `n` TRUE 中第一个 TRUE 的位置

python - 在 json.dumps() 中将 bool 值转换为字符串

c - bool 数据类型之谜

c - 循环直到用户输入一个整数,但如果终端上不存在整数则跳过读入

'strtold' 的冲突类型

c - scanf() 和 fgets() 之间的区别

ios - 当 UIViewController 关闭 iOS 时,int 值仍然保持不变