急——C语言编写素数

来源:百度知道 编辑:UC知道 时间:2024/05/24 17:30:12
我有一个程序
#include<math.h>
prime(int n)
{
int i;
for(i=2;i<=sqrt(n);i++)
if(n%i==0)return(0);
else return(1);
}
main()
{
int n,i;
printf("input n(n>2):");
scanf("%d",&n);
if(prime(n))
printf("%d is a prime number\n",n);
else printf("%d not is a prime number\n",n);
}
请问程序哪里有错误?输入9的时候有就问题出现!拜托哪位大师HELP啊……急啊!答对者再加分!

楼主,你的问题不严重,不要着急,把return (1);前面的else去掉就可以了。你忘了,你需要到底都不能整除才能返回1啊,else跟if是配套的,你怎么才看到一个i不能整除,就返回1呢?

这么改一下看行不行
prime(int n)
{
int i;
for(i=2;i<=sqrt(n);i++) {
if(n%i!=0)
return 1;
}
return 0;
}

#include<math.h>
prime(int n)
{
int i;
for(i=2;i<=sqrt(n);i++)
if(n%i==0)return(0);
if(i>sqrt(n)) return(1);
}
main()
{
int n,i;
printf("input n(n>2):");
scanf("%d",&n);
if(prime(n))
printf("%d is a prime number\n",n);
else printf("%d not is a prime number\n",n);
}