C++ 循环语句的使用,以及针对计算质数的记录。

题目:用穷举法找出1~100内的质数并显示出来,分别使用while ,do while ,for循环语句实现。

 质数定义:

https://baike.baidu.com/item/%E8%B4%A8%E6%95%B0/263515?fr=aladdin

质数(prime number)又称素数,有无限个。
质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数
 
解法1:从定义出发,穷举1~100内。将每个数都与这个数的因子相除取余计算共有多少整除的因子。
         

#include <iostream>

using namespace std;

//用for循环,穷举法计算1~100内质数.
void For_math()
{
for (int i = 1; i<100; i++) //循环1~100内整数
{
int boolstr = 0;//判断是否只有1和其本身能够整除,有一个能整除的累计1,当穷举举结束后累计结果为2时表示只有1和其本身整除。
int k = i;
for (int j = i; k > 0; k--)//循环每个因子
{
if (j%k == 0)
{
boolstr += 1;//能够整除,累计1
}
}
if (boolstr == 2) //结果为2时表示只有1和其本身整除。是质数输出。
cout << "for循环质数" << i << endl;
}
}

void Do_math()
{
int i = 100, j, k;
do
{
k = j = i;
int boolstr = 0;
do
{

if (j%k == 0)
{
boolstr += 1;//能够整除,累计1
}
k -= 1;
} while (k>0);

if (boolstr == 2) //结果为2时表示只有1和其本身整除。是质数输出。
{
cout << "Do循环质数" << i << endl;
}
i -= 1;
boolstr = 0;
} while (i>0);

}

void whilemath()
{
int i = 100, j, k;
while (i > 0)
{
j = k = i; int boolstr = 0;
while (k>0)
{
if (j%k == 0)
{
boolstr += 1;//能够整除,累计1
}
k -= 1;
}
if (boolstr == 2) //结果为2时表示只有1和其本身整除。是质数输出。
{
cout << "while循环质数" << i << endl;
}
i -= 1;
}
}

int main()
{
For_math();

whilemath();

Do_math();

}

 
 
以上为了实现功能。
继续改进:
1、减少参数,减少循环次数,优化算法,提高效率。
2、结构化代码,可复用代码。
 
 

posted on 2020-03-02 11:02  黑夜行走的人  阅读(852)  评论(0)    收藏  举报

导航