代码中的循环语句判断有误,应该把判断写外面,因为判断写里面只会执行一次,但是实际的判断逻辑需要你遍历完整个循环才能判断 a
是否为一个素数
如果要修改的话,应该把判断写在外面,这是最常见的写法:
/** primeJudge.c -- 判断一个正整数是否为质数 */
#include <stdio.h>
#include <stdbool.h>
int main(void)
{
// 定义要判断的变量 a 和索引变量 i
int a, i;
// 从命令行中读取数据
printf("请输入要判断的数:");
scanf("%d", &a);
// 循环判断 a 是否为素数
bool isPrime = true;
for (i = 2; i <= a - 1; i++)
{
if (a % i == 0) {
// a 能被中间的数整除说明不是素数
isPrime = false;
break;
}
}
if(isPrime) {
printf("%d 是素数\n", a);
} else {
printf("%d 不是素数\n", a);
}
return 0;
}
或者这样写,不过这是种取巧的写法,了解就好,不建议新手尝试:
/** primeJudge.c -- 判断一个正整数是否为质数 */
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
// 定义要判断的变量 a 和索引变量 i
int a, i;
// 从命令行中读取数据
printf("请输入要判断的数:");
scanf("%d", &a);
for (i = 2; i <= a - 1; i++)
{
if (a % i == 0) {
printf("%d 不是素数\n", a);
exit(1);
}
}
printf("%d 是素数\n", a);
return 0;
}
你要循环完了才能说是素数不是素数,不要在循环里着急打印结果