如何判断素数:所谓素数是指除了1和它本身以外,不能被任何整数整除的数。如果m不能被2~√m间任一整数整除,m必定是素数。
先放出正确的代码:
#include<stdio.h>
#include<math.h>
int IsPrime(int a) //判断是否为素数
{
int j;
int k = (int)sqrt(a);
for (j = 2; j <= k; j++)
{
if (a % j == 0)
break; //break跳出for循环
}
if (j>k) //执行完for循环(没有执行过break语句) 最后j++ 此时 j = k+1
{
printf("%2d ", a);
}
}
int main()
{
for (int i = 100; i <= 200; i++)
{
IsPrime(i);
}
getchar();
return 0;
}
然后说说 关于break的问题:
break 语句是限定转向语句,它使流程跳出所在的结构之后。break语句在循环结构中的作用是相同的:跳出所在的循环结果,转向执行该循环结构后面的语句。如for。while。do-while 循环语句
break通常与if语句关联在一起:满足条件就跳出循环,不是跳出if语句
(1)break语句对if-else语句不起作用,(不是跳出if语句)
(2)在多层循环中,一个break语句只是向外跳出一层循环
ps:关于break,continue的区别 下次再写
关于自己的问题 注意是错误的
for (j = 2; j <= k; j++)
{
if (a % j == 0)
break;
else //即a%j!=0 这段代码只是判断了能不能被2整除;
{
printf("%2d ",a); //printf输出的是奇数,并不是偶数;
break;
}
}
这段代码 for循环 根本就没有意义
ps: 有时候 真是自己写的东西 自己都看不懂 真是有点蠢..............
突然感觉自己的脑袋不够用了