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<stdioh>
#include<mathh>
void main()
{
int isprime(int m);
int n;
scanf("%d",&n);
if(isprime(n))
printf("%d is a prime number\n",n);
else
printf("%d is NOT a prime number\n",n);
}
int isprime(int m)
{
int i,k;
k=(int)sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0) break;
if(i>k)
return 1;
else
return 0;
}
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;test
#include <stdioh>
#include <mathh>
int panduan (int n);
void main ()
{ int m,n;
printf ("请输入一个整数:");
scanf ("%d",&n);
printf("\n");
m=panduan (n);
if (m==1)
printf ("%d 是素数\n\n",n);
else if (m==0)
printf ("%d 不是素数\n\n",n); }
int panduan (int n)
{ int k,i;
if (n==0||n==1)
return (0);
else
k=sqrt(n);
for (i=2;i<=k;i++)
if(n%i==0)
break;
if(i>k)
return (1);
else
return (0); }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)