看一下这个程序

来源:百度知道 编辑:UC知道 时间:2024/06/14 00:41:03
#include<stdio.h>
#include<math.h>
{
int m,i,k;
printf{"\nenter a num"};
scanf("%d",&m);
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)
break;
if(i>=k+1)
printf("%d is a prime num\n",m);
else
printf("%d is not prime num\n",m);
}

这个程序可判断m是否为素数,请高手解释一下

原理:对一个数求平方根,因为相乘的话,肯定有一个小于等于平方根的。
从2开始循环检测,遇到可以被整除(if(m%i==0))就跳出循环,显然此时没有循环完i<k+1,就不是素数,如果循环完就是i=K+1.

另外程序有误,下面是修改过的
#include<stdio.h>
#include<math.h>
void main()
{
int m,i,k;
printf("\nenter a num");
scanf("%d",&m);
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)
break;
if(i>=k+1)
printf("%d is a prime num\n",m);
else
printf("%d is not prime num\n",m);
}