帮忙解说一下
/* 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=3它是怎样循环的,或a=5的时候呢?
a = 2 时 a / 2 == 1
a = 3 时 a / 2 == 1
a = 4 时 a / 2 == 2
----------------解决方案--------------------------------------------------------
一般判断是否素数的话,n从2遍历到sqrt(a)就可以了,不过需要包含math.h文件。
----------------解决方案--------------------------------------------------------