cpp第七章p188
编写一段关于判断素数以及找出它们的约数。
首先给出代码
#include<stdio.h>
#include<stdbool.h>
int main()
{
unsigned long num; //待测试的数字
unsigned long div; //约数
bool isPrime; //素数标记
printf("please enter an integer for analysis;");
printf("enter q to quit.\n");
while(scanf("%lu",&num)==1)
{
for(div=2,isPrime=true;(div*div)<=num;div++)
{
if(num%div==0)
{
if(div*div!=num)
printf("%lu is divisible by %lu and %lu.\n",num,div,num/div);
else
printf("%lu is divisible by %lu\n",num,div);
isPrime=false;
}
}
if(isPrime)
printf("%lu is prime.\n",num);
printf("please enter another integer for analysis.\n");
printf("enter q to quit.\n");
}
printf("bye~");
return 0;
}
程序的编译结果
在其中遇到的错误:
1.for循环的初始化和条件中分号;与逗号,混用(基本功不扎实…)
解析:for的()内包括三部分内容,初始化、条件、驱动变化,用“;”隔开,而每一部分内容用“,”隔开
比较简练部分:
1.第一个while中把输入函数scanf与判断合在一起
2.利用平方根的范围判断,大大减少了运算过程
3只采用运算中想要的部分,当判断到不合条件直接忽略
求解:下面的if(isPrime)到底是怎么用的,初判断它下面部分也属于while循环里但不在for里的,应该是一定要输出的,那它有什么作用呢