/判断是不是素数
成都创新互联公司自2013年创立以来,先为天心等服务建站,天心等地企业,进行企业商务咨询服务。为天心企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
#includestdio.h
int prime(int a);//函数声明
int main()
{
int n,i;
scanf("%d",n);
if(prime(n)==1) //return返回值1
printf("prime");
else
printf("not prime") ;
}
int prime(int a)
{
int i;
for(i=2;ia;i++)
if(a%i==0)
return 0;//a%i==0不成立
else
return 1;//a%i==0成立
}
扩展资料:
素数的算法
1、素数:除了1和本身外无法被其他自然数整除的数,叫做素数,也称质数,如:2,3,5,7一系列。
2、合数:比1大但不是素数的数称为合数,如:8,9,10一系列。
3、特殊的数字:1和0既不是素数也不是合数。
4、算法: 1确定性算法 2随机性算法 3Eratosthenes算法。
还有一个错误,C语言中没有bool类型,默认返回值是0,你可以一个一个类型的函数检测、float,没有返回值时、double类型的函数,你这个程序不只是逻辑不能那样说,但是如果是long或者char型时,返回值就不是0了,如果是返回值int。
另外多说一句、算法错了
c语言判断素数的函数程序:
经分析,以上代码使用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);
}