C语言问题。编写一个函数:int isprime(int n)用于判断一个整数是否为素数,如果是就返回1,否则返回0。
#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"
应该是因为使用了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;
*/
}
!!!!谢谢!!!
只有经过重重考验 才能i==n 这才是质数!