新问题:但是为什么表达式来自 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”的结果,即 true
或 false
.
这个例程还有一个副作用:它将找到的阶乘存储在 header 中两个 int * 指向的列表中。
本质上,它返回 true
如果因子是素数——循环一直倒数到“1”——,false
否则。
关于c - 返回在这里如何运作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54725908/