判断素数的C语言代码

来源:百度知道 编辑:UC知道 时间:2024/06/18 23:17:32
在程序中调用了一个函数inr Prime(int num)
#include<stdio.h>
#include<stdlib.h>
int Prime(int num);
int main()
{
int x;
scanf("%d",&x);
if(Prime(x)==0)
{
printf("%d不是素数",x);
}
else
{
printf("%d是素数",x);
}
system("pause");
return 0;
}
int Prime(int num)
{
int num;
int i=2;
for(i=2;i*i<=num;i++)
{
if(num%i==0)
return 0;
}
}

结果我输入6,8这些它也显示是素数,晕死我la
高人来救我啦
想要一个对我的这个程序直接尽兴改变的答案,谢谢啦

你的程序怪怪,int Prime(int num) 函数中怎么又重复定义一个num变量。编译就无法通过。把int Prime(int num) 函数中定义的num变量去掉就可以编译了。而且我在VC下试了,程序没错呀。另外int Prime(int num) 函数中如果是素数而完成循环后应该有个return语句返回(返回非0就可以),你没有写。

int Prime(int num)
{
//int num;
int i=2;
for(i=2;i*i<=num;i++)
{
if(num%i==0)
return 0;
}
return n > 1; //增加
}

更高效的算法
int isPrime(int n)
{
int i = 2;
for( ; i * i <= n; i = (i + 1) | 1)
if(n % i == 0)
return 0;
return n > 1;
}

#include "stdio.h"
#include<math.h>
int ss (int n)
{int k;
for(k=2;k<=sqrt(n);k++)
if(n%k==0) return 0;
return 1;
}
main()
{
int x;
scanf("%d",&x);
if(ss(x))
printf("YES\n");
else
printf("NO\n");
}
你拿这个来就行了。

#include<stdio.h>
#include<stdlib.h>
int P(int n)
{