标题:请问函数前面加!是什么意思,return i==m;是什么意思
只看楼主
毛利超
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2015-5-14
结帖率:0
已结贴  问题点数:20 回复次数:2 
请问函数前面加!是什么意思,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);   /* 输出最后一个不能分解的因数 */
    }
}
搜索更多相关主题的帖子: include return repeat 
2015-05-14 22:19
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
得分:10 
==是关系运算符,判断两值是否相等,运算的结果为真或假(非0或0)。!为逻辑运算符,就是“非”“不是”的意思.
函数prime的返回值是return i==m,即返回真或假,!prime则是指非(不是)真或不是假,使用函数返回值相反的结果。

能编个毛线衣吗?
2015-05-14 22:51
纳兰伽香
Rank: 10Rank: 10Rank: 10
来 自:北京
等 级:贵宾
威 望:10
帖 子:426
专家分:1650
注 册:2015-4-5
得分:10 
一般返回的时候  最好别返回栈内存

风回小院庭芜绿,柳眼春相续
2015-05-15 11:52



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-445304-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.078792 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved