一、判断质数
质数也叫素数,是指一个大于1的自然数,因数只有1和它自身。质数是数论中一个经典的概念,很多著名定理和猜想都跟它有关;质数也是现代密码学的基础。
判断一个数是否为质数没有什么规律可言,我们可以通过验证小于它的每个数能否整除,来做暴力求解。下面是一段判断质数、并输出0~100内所有质数的程序:
#include<iostream>
using namespace std;
//判断是否为质数的函数
bool isprime(int num)
{
int i = 2;
while (i < num)
{
if (num % i == 0)
{
return false;
}
++i;
}
return true;
}
int main()
{
cout << "请输入一个自然数(小于20亿)" << endl;
int num;
cin >> num;
cin.get();
//根据标志位判断结果
if (isprime(num))
cout << num << "是质数" << endl;
else
cout << num << "不是质数" << endl;
//输出0—100所有的质数
cout << "0~100内所有的质数为:" << endl;
for (int i = 2; i <= 100; i++)
{
if (isprime(i))
cout << i << "\t";
}
cout << endl;
cin.get();
}
运行结果:
二、猜数字
猜数字是一个经典的小游戏,程序随机生成一个0~100的数字,然后由用户输入来猜测。如果猜对,输出结果并退出;如果不对,则提示偏大还是偏小。我们可以对猜的次数做限制,比如一共5次机会。
#include<iostream>
using namespace std;
int main()
{
cout << "========猜数字========" << endl;
cout << "游戏规则:输入0~100的整数,有5次机会" << endl;
//生成随机数
srand(time(0));
int target = rand() % 100;
//利用循环不断进行猜测
int n = 0;//猜测的次数
while (n < 5)
{
cout << "请输入0-100的整数" << endl;
int num;
cin >> num;
cin.get();
if (num == target)
{
cout << "恭喜你,猜对了!幸运数字是:" << target << endl;
break;
}
else if(num > target)
{
cout << "数字太大了,请再猜一遍" << endl;
}
else if (num < target)
{
cout << "数字太小了,请再猜一遍" << endl;
}
++n;
}
if (n == 5)
{
cout << "不好意思,您没有猜中,欢迎下次再来!" << endl;
}
cin.get();
}
运行结果:
三、爱心曲线
利用流程控制语句也可以绘制二维图形。只要知道函数表达式,就可以画出相应的曲线了。
我们可以尝试绘制传说中的“爱心曲线”。一个典型的爱心曲线函数如下:
#include<iostream>
using namespace std;
int main()
{
//爱心曲线方程(x^2 + y^2 - a)^3 - x^2 * y^3 = 0
double a = 1;
//定义绘图边界
double bound = 1.3 * sqrt(a);
//x、y坐标变化步长
double step = 0.05;
//二维扫描所有点,外层逐行扫描
for (double y = bound; y >= -bound; y -= step)
{
//内层逐点扫描
for (double x = -bound; x <= bound; x += 0.5 * step)
{
//代入曲线方程,计算每个点是否在曲线内
double result = pow((pow(x, 2) + pow(y, 2) - a), 3) - (pow(x, 2) * pow(y, 3));
if (result <= 0)
cout << "*" ;
else
cout << " ";
}
cout << endl;
}
cin.get();
}
运行结果: