当前位置: 代码迷 >> C语言 >> 帮忙解说一下
  详细解决方案

帮忙解说一下

热度:136   发布时间:2007-12-03 19:25:35.0
帮忙解说一下
/* Note:Your choice is C IDE */
#include "stdio.h"
int prime(a)
int a;
{
    int flag=1,n;
    for(n=2;n<=a/2&&flag==1;n++)
    if(a%n==0)
    flag=0;
    return flag;
}

main()
{
    int a;
    scanf("%d",&a);
    if(prime(a))
    printf("yes");
    else
    printf("no");
}
我看不懂前面那个函数,请大家解说一下,谢谢了!
搜索更多相关的解决方案: 解说  

----------------解决方案--------------------------------------------------------
/* 一种古老的写法 int prime(a) int a;  {}  */
/* 夸张了点                   */


/* 等同于 */
int prime(int a)    /* 如果是质数程序返回 1 ,否则返回 0 */
{
    int flag = 1, n;
    for(n = 2; n <= a / 2; n++)
        if(a % n == 0)
        {
            flag = 0;
            break;
        }
    return flag;
}


    质数就是在所有比1大的整数中,除了1和它本身以外,不再有别的约数,这种整数叫做质数,质数又叫做素数。还可以说成质数有两个约数。

[[italic] 本帖最后由 cosdos 于 2007-12-3 19:35 编辑 [/italic]]
----------------解决方案--------------------------------------------------------
回复 2# 的帖子
我知道什么叫素数,但是我是看不明白,它从那里判断是素数了,假如a=2或a=3它是怎样循环的,或a=5的时候呢?
----------------解决方案--------------------------------------------------------
原帖由 [bold][underline]wangyinshiwo[/underline][/bold] 于 2007-12-3 19:41 发表 [url=http://bbs.bc-cn.net/redirect.php?goto=findpost&pid=1129133&ptid=190147][/url]
我知道什么叫素数,但是我是看不明白,它从那里判断是素数了,假如a=2或a=3它是怎样循环的,或a=5的时候呢?


a = 2 时 a / 2  == 1

a = 3 时 a / 2  == 1

a = 4 时 a / 2 == 2
----------------解决方案--------------------------------------------------------
一般判断是否素数的话,n从2遍历到sqrt(a)就可以了,不过需要包含math.h文件。
----------------解决方案--------------------------------------------------------
  相关解决方案