请问函数前面加!是什么意思,return i==m;是什么意思
#include <stdio.h>int prime(int m) /* 函数prime()定义 */
{
int i;
for(i=2; i<=m-1; i++) /* i为除数,取值范围是[2, m-1] */
{
if(m % i == 0) /* 若m可以被i整除,则 */
break; /* 跳出循环,此时i值必定在范围[2, m-1]内 */
}
return i==m;
}
main()
{
int i, k, m;
int repeat, ri;
scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++)
{
scanf("%d", &m);
printf("%d = ", m);
i = 2;
while(i <= m-1) /* 可能的质因数范围是:[2, n-1] */
{ /* 也可写成while(!prime(m)),即只要m不是素数就继续分解 */
if(!prime(i)) /* 若i不是素数,则它不可能是质因数,所以 */
{
i++; /* 尝试下一个值 */
continue;
}
if(m % i != 0) /* 尽管i是素数,但是它不能整除n,则它仍旧不是质因数 */
{
i++; /* 所以,继续尝试下一个值 */
continue;
}
printf("%d*", i); /* i是质因数。输出这个质因数 */
m = m / i; /* 继续对n / i的商分解质因数 */
}
printf("%d\n", m); /* 输出最后一个不能分解的因数 */
}
}