输入一个正整数m,判断它是否为素数。为什么i<=m/2,m/2是什么意思?
#include<stdio.h>intmain(void){inti,m;printf("Enterm:");scanf("%d",&m);for(i=2;i<=m/2...
#include<stdio.h> int main(void) { int i,m; printf("Enter m:"); scanf("%d",&m); for(i=2;i<=m/2;i++) if(m%i==0) break; if(i>m/2&&m!=1) printf("%d is a prime number!\n",m); else printf("No!\n"); return 0; }
展开
1个回答
展开全部
m/2是取整,比如m=1时,1/2就是0;m=2时,2/2就是1;3/2=1;4/2=2...
另外还有一个m%2.念m“摩”2,是取余数的意思。如1%2,结果是1;2%2,结果是0;3%2=1.
判断m是否是素数,只要判断i从小到大是否都不能把m整除就行了。
for(i=2;i<=m/2;i++)//之所以m/2,是为了减少计算,你也可以写成m。
if(m%i==0)//当可以整除的时候,跳出循环。这时跳出,就已经证明m(如果m!=1的话)不是素数了。
//除非是因为i==m/2时跳出,m才可能是素数。
break;
if(i>m/2&&m!=1)//跳出循环后,判断,此时的m若不是1,则m就是素数,i>m/2是为了判断i是否==m/2,当然,写“>”会比较好。
printf("%d
is
a
prime
number!\n",m);
else
printf("No!\n");
另外还有一个m%2.念m“摩”2,是取余数的意思。如1%2,结果是1;2%2,结果是0;3%2=1.
判断m是否是素数,只要判断i从小到大是否都不能把m整除就行了。
for(i=2;i<=m/2;i++)//之所以m/2,是为了减少计算,你也可以写成m。
if(m%i==0)//当可以整除的时候,跳出循环。这时跳出,就已经证明m(如果m!=1的话)不是素数了。
//除非是因为i==m/2时跳出,m才可能是素数。
break;
if(i>m/2&&m!=1)//跳出循环后,判断,此时的m若不是1,则m就是素数,i>m/2是为了判断i是否==m/2,当然,写“>”会比较好。
printf("%d
is
a
prime
number!\n",m);
else
printf("No!\n");
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询