c# - 埃拉托色尼筛,代表数字的倍数
问题描述
我正在尝试使用 Erathosthene 筛确定素数,使用布尔数组(每个值都以假值开头)
这是我的问题:
我不能代表 2,3,5,7 的倍数来为它们分配值“真”,并且只有我剩余的素数的值为“假”
如何获取素数的 int 值而不是它们的布尔值?
解决方案
您的代码超出了界限索引。以下代码应该可以工作:
int n = 120;
bool[] array = new bool[n];
for (int i = 0; i < n; i++)
{
if (i != 1)
{
if (2 * i < n)
array[2 * i] = true;
if (3 * i < n)
array[3 * i] = true;
if (5 * i < n)
array[5 * i] = true;
if (7 * i < n)
array[7 * i] = true;
}
if (array[i] == false)
{
Console.WriteLine(i);
}
}
推荐阅读
- elasticsearch - 当第一个字母拼写错误时,短语建议器返回意外结果
- node.js - .net core 2 angular 5 prerender 失败
- terraform - Terraform 插值以访问给定类型的所有资源的属性
- sql - SQL 查询问题中的案例语句
- algorithm - 查找给定二进制数字设置为 0 的第 N 个数字
- java - Java使用正则表达式检测字符串中的第一级“if”条件
- java - 电话号码模拟的正则表达式
- swift - 如何使闭包更短?
- rest - 可以通过 REST 连续侦听来自 Azure 服务总线队列的消息吗?
- html - 在 dojo 数据网格单元格中设置组合框取决于值类型