#include<stdio.h>
#include<math.h>
int isPrime( int num )
{
double tmp;
int i;
//两个较小数另外处理
if(num ==2|| num==3 )
return 1 ;
//不在6的倍数两侧的一定不是质数
if(num %6!= 1&&num %6!= 5)
return 0 ;
tmp =sqrt(num);
//在6的倍数两侧的也可能不是质数
for(i= 5;i <=tmp; i+=6 )
if(num %i== 0||num %(i+ 2)==0 )
return 0 ;
//排除所有,剩余的是质数
return 1 ;
}
int main(void)
{
int i;
int num;
printf("输入一个整数");
while(!scanf("%d", &num))
{
printf("输入有误!程序退出!");
exit(-1);
}
if(isPrime(num)) {
printf("This is prime number!");
}else{
for(i = 2; i < num; i++)
if(num % i == 0)
printf("%d ", i);
}
return 0;
}
自己看看吧其中判断素数的算法是从网上找的效率比较高了。
其实也除了算法之外 ;也是考了你for循环和选择结构语句的配合使用了。。。。
追问好的 我研究一下 谢谢!!
追答记得采纳我
😄