标签:5.1 arr ++ int 98 素数 倍数 习题 100
习题 5.1 用筛法求100之内的素数。
用筛法求素数的基本思想是:
把从2到N的一组正整数从小到大按顺序排列。从中依次删除2的倍数、3的倍数、5的倍数,直到根号N的倍数为止,剩余的即为2~N之间的所有素数。如有:
2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
去掉2的倍数(不包括2),余下的数是:
3 5 7 9 11 13 15 17 19 21 23 25 27 29
剩下的数中3最小,去掉3的倍数,如此下去直到所有的数都被筛完,求出的素数为:
2 3 5 7 11 13 17 19 23 29
代码:
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int i,j,k;
int arr[98];
for (i = 0; i != 98; ++i) //存2~98
{
arr[i] = i + 2;
}
for (i = 0; i != 98 ; ++i)
{
for (j = i+1; j != 98; ++j)
{
if (arr[i] != 0 && arr[j] != 0)
{
if (arr[j] % arr[i] == 0) //去除倍数
{
arr[j] = 0;
}
}
}
}
for (i = 0,k = 0; i != 98; ++i)
{
if (arr[i] != 0)
{
cout << setw(4)<<arr[i];
++k;
}
if (k % 10 == 0) //每行输出10个
{
cout << endl;
k = 0;
}
}
return 0;
}
运行结果:
标签:5.1,arr,++,int,98,素数,倍数,习题,100 来源: https://blog.csdn.net/weixin_42597789/article/details/123078899
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。