素数问题在线等

来源:百度知道 编辑:UC知道 时间:2024/05/28 15:35:32
#include<stdio.h>
void main()
{
int prime(int);
int n;
printf("\ninput an integer: ");
scanf("%d",&n);
if (prime(n)) 还有这里,函数调用回来后,只有1 and 0,这里是如何判断出来的??详细点
printf("\n %d is a prime.\n",n);
else
printf("\n %d is not a prime.\n",n);
}
int prime(int n)
{
int flag=1,i;
for(i=2;i<=n/2&&flag==1;i++) n/2的意思解释下,为什么不直接是n就可以了?
if(n%i==0)
flag=0;
return(flag);
}
一楼,第一个问题你回答得很不错,可是第二个问题就没对了,我去除掉N/2以后,保留n。结果就会
出错

第一个问题:if语句括号内如果是真就执行,反之就不执行,这里只要不是0的数都看成真,就是说prime(n)相当于prime(n)!=0

第二个问题:这里也可以用n,之所以用n/2是为了减少时间复杂度,就是节约时间。因为素数的因子总小于n/2,(其实比sqrt(n)都小)。