重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
c语言判断素数的函数程序:
乐平ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!
经分析,以上代码使用flag的值来判断输入的n是否为素数,flag=1,n为素数;flag=0,n不是素数。完善if条件语句,第一个if,主函数中的if调用函数,需要填入一个参数,即prime(n);第二个if,是判断什么情况下flag=0,即输入的整数不为素数,即(n/i==0),余数为0,可以整除;最后返回flag的值,returnflag
但是经过运行可以知道,n=4的时候,程序判断4是素数,明显是错误的,n取0和1的时候同理,程序存在漏洞。分析得知,在定义函数的过程中,for循环条件语句,i=0,如果为负整数,另加判断条件,略)
我以前写的程序,绝对正确
#include stdio.h
#include stdlib.h
#include math.h
void main()
{
long num,nu;
long number();
int a=0;
while(1)
{
printf(\"1.判断是否是素数\\n2。退出\\n请选择:\");
scanf(\"%d\",a);
switch(a)
{
case 1:
printf(\"\\n请输入判断数字\");
scanf(\"%ld\",num);
nu=num;
num=number(num);
if(num!=0)
printf(\"%ld是素数\\n\",num);
else
printf(\"%ld不是素数\\n\",nu);
printf(\"\\n\\n\");
break;
case 2:
exit(0);
default:
printf(\"\\n您输入的有错误,请重新输入!\\n\\n\");
break;
}
}
}
long number(n)
long n;
{
static long k,i;
static long m;
k=(long)sqrt(n);
for(i=2;i=k;i++)
if(n%i==0)
break;
if(i=k+1)
m=n;
else
m=0;
return(m);
}
还有一个错误,C语言中没有bool类型,默认返回值是0,你可以一个一个类型的函数检测、float,没有返回值时、double类型的函数,你这个程序不只是逻辑不能那样说,但是如果是long或者char型时,返回值就不是0了,如果是返回值int。
另外多说一句、算法错了