|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include <stdio.h>
- int main()
- {
- int count = 2; // 已知2和3是素数
- int i, j;
- _Bool flag = 1;
- for (i = 5; i < 10000; i++)
- {
- for (j = 2; j < i / 2; j++)
- {
- if (i % j == 0)
- {
- flag = 0;
- break;
- }
- }
- if (flag)
- {
- count++;
- }
- else
- {
- flag = 1;
- }
- }
- printf("10000以内共有%d个素数!\n", count);
- return 0;
- }
复制代码
对于这个if else语句中,flag=1这句代码没太明白起的作用是什么 求大佬帮小弟解释一下 感谢感谢!
- int main()
- {
- int count = 2; // 已知2和3是素数
- int i, j;
- _Bool flag = 1; //相等于一个布尔型变量,ture(非零),false(为零)
- for (i = 5; i < 10000; i++)
- {
- for (j = 2; j < i / 2; j++)
- {
- if (i % j == 0)
- {
- flag = 0; //如果i与j的模=0,不就是意味着这个当前的i能被别的数除尽,那就不是素数,所以flag为false(=0)
- break;
- }
- }
- if (flag) //if语言里面 当flag为真(也就是flag仍然=1)时,执行count++,flag到这一步还是1,说明前面的循环没有改变flag的值,则意味着i除了被自己整除以外,没有别的数可以除尽,不就说明是素数吗?所以count的个数+1
- {
- count++;
- }
- else //调到这儿意味着flag为false 也就是flag被赋值为0了,说明当前的i不为素数,然后准备下一个数,假设下一数为素数,这时候得重置flag为1
- {
- flag = 1;
- }
- }
- printf("10000以内共有%d个素数!\n", count);
- return 0;
- }
复制代码
|
|