判断素数这程序哪有问题

来源:百度知道 编辑:UC知道 时间:2024/05/13 03:08:40
#include<stdio.h>
main()
{
int num,i;
printf("input a number:");
scanf("%d",&num);
for(i=2;i<=num/2;i++){
if(num%i!=0);
printf("%d is not a 素数\n",num);
}
}

#include<stdio.h>
#include<math.h>
main()
{
int num,i,k;
printf("Input a number");
scanf("%d", &num);
k = sqrt( num );
for( i = 2; i <= num; i++ ){
if( !num%i )
break;
}
if( i > k ) printf("%d is a prime number\n",num );
else printf("%d is not a prime number\n",num );
}
/*****************
*让num被2到sqrt(num)除,如果num能被他们之间的任一整*除提前退出循环,此时i必定小于或等于k
********************************/

for(i=2;i<=num/2;i++){
if(num%i!=0);
printf("%d is not a 素数\n",num);
}
改为
int x=0;
for(i=2;i<=num/2;i++)
if(num%i==0} x=1;//有一个能正数,不是素数
if x==0 printf("%d is a 素数\n",num);
else printf("%d is not a 素数\n",num);