版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/w442863748/article/details/50440600
判断一个数是否是素数的小程序, 顺便试验了一下, cin.fail(), cin.clear(), cin.sync()这三个函数
#include<iostream>
#include<math.h>
using namespace std;
void isPrimeNum(int num)
{
for (int i = 2; i <= sqrt((double)num); i++)//优化,从2判断到根号num就可以了
{
if(num % i == 0)
{
cout << "不是素数" << endl;
return;
}
}
cout << "是素数" << endl;
}
void main()
{
int i = 1;//声明时初始化是个好习惯
while(i != 0)
{
cout << "请输入正整数(0结束):" << endl;
cin >> i;
if((cin.fail() || i < 1) && i != 0) //无法判断输入的是不是小数,可用字符串接收,按位判断
{
cout << "输入错误,请重新输入" << endl;
cin.clear(); // 错误位重置
cin.sync(); // 清空缓存区 如果不加这个函数就死循环了
continue;
}
if(i != 0)
isPrimeNum(i);
}
system("pause");
}