C语言问题。编写一个函数:int isprime(int n)用于判断一个整数是否为素数,如果是就返回1,否则返回0。

在主函数中通过循环调用isprime()函数输出300—500之间的素数,每输出10个素数后换行。isprime()定义在前,主函数在后。
#include<stdio.h>
int isprime(int n)
{
int i;
for(i=2;i<=n-1;i++)
if(n%i==0)
break;
if(i<n)
return 0;
else
return 1;
}
int main()
{
int isprime(int n);
int n,p,j=0;
for(n=300;n<=500;n++)
{
p=isprime(n);
if(p==1)
{
printf("%4d",n);
j++;
if(j%10==0)
printf("\n");
}
}
return 0;
}
这上面的为什么 i<n 就返回0呢?i 不是本来就要比n小才成立么?为什么反而不是素数?

int isPrime(int num) {

int divisor = 3;

int testLimit = num;

if (num < 2)

return 0;

if ( num < 4 )

return 1;

if (num % 2 == 0)

return 0;

while ( testLimit >= divisor ) 

{

if ( num % divisor == 0 ) 

return 0;

testLimit = num / divisor;

divisor += 2;

}

return 1;

}

扩展资料:

return的用法:

return的作用是结束正在运行的函数,并返回函数值。return后面可以跟一个常量,变量,或是表达式。

函数的定义一般是这样的,例如:

int a(int i)//第一个int是函数的返回值的类型,也就是return后面跟的值的类型,a是函数的名称,括号里的是传递给函数的参数,int是参数的类型,i是参数的名字

{

...//省略函数体内容

return b;//b必须与函数头的返回值一致(此处为int型)

}

简单函数举例:

int addOne(int b)

{

return b+1;

}

该函数的作用是取得一个数,将这个数加上1,再将结果返回

调用时这样:

int result=addOne(2);//此时result的值为3

函数括号里的参数也可以为变量或能算出值的表达式

以上就是一个基本的函数,一般的函数都有返回值,也就是return后面跟的值,返回值可以为各种数据类型,如:int,float,double,char,a[](数组),*a(指针),结构或类(c++)

但不是所有函数都有返回值,如果某个函数无返回值,那么返回值的位置则为“void”关键字,此时函数体中无返回值,即无return的值。但是函数中也可出现return,即一个空的return句子,其作用是使函数立即结束,如void print()//括号中为空表示无传递参数、

{

printf("a");

printf("b");

return;//函数执行到此处结束

printf("c");

}//该函数只执行到return语句处,即屏幕上输出的为"ab"

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-26

应该是因为使用了break语句,作者想来想去就写出来这种神码了。 不用管它,你理解的是对的,它的代码改一下 可以简单些。如下! 没来来 0x30吧玩


int isprime(int n)
int i;
for(i=2;i<=n-1;i++)
        if(n%i==0) break;
 if(i<n)return 0;
  else  return 1;
  /*
  不如直接写成
  for (i=2; i<=n-1; i++) { if (n%i==0) return 0;}
  return 1;
  */
}

追问

!!!!谢谢!!!

本回答被提问者采纳
第2个回答  2013-11-21
你想想 如果n是2的倍数 刚刚进入循环就退出了 则i=2 这时i<n 当然不是质数啦

只有经过重重考验 才能i==n 这才是质数!
第3个回答  2013-11-21
这个程序应该不能完成任务吧?

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网