如何在Delphi中检查素数

2023-12-28

我想将 1 到 10000 之间的所有素数读入一个动态数组,将所有非素数读入另一个动态数组,然后将素数数组读入richedit1到目前为止我有:

procedure primearrays;
var
  j, k, l, i, m: integer; // k is the number I am testing for prime number
  // j is used in the for loop to check all numbers smaller than k to see if k is dividable by j
  // l is just a variable set to k mod j to make the if run more smoothly
  // i is the length of the array anotprime
  // m is used to set the length of the array aprime
  bflag: boolean; // bflag is to show if this number is a prime number
  aprime, anotprime: array of integer;
  // aprime is the array of prime and anotprime is the array of nonprime numbers
begin
  j := 0;
  i := 0;
  l := 0;
  richedit1.Lines.Clear;
  bflag := false;
  for k := 2 to 10000 do
  begin
    j := 0;
    while not(j = (k - 1)) do
    begin
      inc(j);
      l := k mod j;
      if (l = 0) then
      begin
        bflag := false;
        inc(i);
        setlength(anotprime, i);
        anotprime[i - 1] := k;
        j := k - 1;
      end
      else
      begin
        bflag := true;
      end;
    end;
    m := -1;
    if (bflag) then
    begin
      inc(m);
      setlength(aprime, m);
      aprime[m - 1] := k;
      richedit1.Lines.Add(inttostr(aprime[l-1]));
    end;
  end;
end;

但这似乎不起作用。它将所有整数放入anotprime.


也许您遇到的主要问题是您将所有不同的方面(循环候选、素数检查、显示等)混合到一个函数中。

如果您将任务分解为仅执行单个任务的小块,生活就会变得容易得多。从一个测试数字是否为素数的函数开始。

function IsPrime(N: Integer): Boolean;
var
  M: Integer;
begin
  Assert(N > 0);
  if N = 1 then // annoying special case
  begin
    Result := False;
    exit;
  end;
  for M := 2 to (N div 2) do
  begin
    if N mod M = 0 then
    begin
      Result := False;
      exit;
    end;
  end;
  Result := True;
end;

现在您可能希望创建一个包含素数的列表:

var 
  Primes: TList<Integer>;
  N: Integer;
....
// create Primes
for N := 1 to 10000 do
  if IsPrime(N) then
    Primes.Add(N);

这不是枚举素数的最有效方法。但这可能是您应该开始的地方,我写这个答案主要是为了鼓励您将代码分成小的逻辑方法来执行特定的重点任务。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Delphi中检查素数 的相关文章

  • 如何将我的图标添加到组件选项板页面中的组件? [复制]

    这个问题在这里已经有答案了 可能的重复 Delphi非可视化组件图像 https stackoverflow com questions 3319276 delphi non visual component image 如何将我的图标添加
  • 我可以在“Delphi 2007 for Win32”中使用.NET DLL吗?

    是否可以在 Delphi 2007 for Win32 中使用 NET DLL 我尝试以与 ActiveX 组件相同的方式导入 DLL 但它似乎不起作用 组件菜单 gt 导入组件 gt 导入 NET 程序集 是否可能 如果可以 步骤是什么
  • VCL.位图到 FMX.位图

    我在网上找到了这段代码 但 FMX Bitmap 没有扫描线 是否可以以某种方式将 VCL TBitmap 复制或绘制到 FMX Bitmap IFDEF MSWINDOWS type TBitmap FMX Types TBitmap T
  • 如何在 Vista 上安装 Delphi 7

    我多次尝试在 Vista 上安装 Delphi 7 但 Vista 告诉我此应用程序 Delphi 7 存在已知问题 从而阻止了我这样做 我公司的其他几个人在 Vista 上安装 D7 时遇到了问题 由此得出的结论是 我们的 D7 应用程序
  • 加载 Jpg/Gif/Bitmap 并转换为 Bitmap

    我必须从 XML 文件加载图像 XML 文件中没有关于图像是否为 JPG GIF BMP 的信息 加载图像后 我需要将其转换为位图 有谁知道如何在不知道实际文件格式的情况下将图像转换为位图 我正在使用 Delphi 2007 2009 谢谢
  • Indy 的 TIdHTTPProxyServer:如何过滤请求?

    我正在使用 TIdHTTPProxyServer 来实现一个简单的 HTTP 代理 但我现在想阻止一些与某些 URL 匹配的连接 哪个事件和 或组件最适合实现这一目标 Indy 文档并没有太多解释 Thanks 作为基本过滤器 您可以使用
  • 如何根据输入的内容过滤组合框的内容?

    我们有一个包含 100 多个项目的组合框 当我们在组合框中输入字符时 我们想要过滤掉项目 例如 如果我们输入 ac 并单击下拉选项 那么我们希望它仅显示以 ac 开头的项目 我怎样才能做到这一点 也许您会更喜欢使用操作系统内置的自动完成功能
  • 带位图的简单组合框

    如何将位图放入组合框中并将样式设置为简单 例如 Google Chrome 的右侧有星号 Firefox 的右侧有箭头 我尝试了这段代码 procedure TForm2 ComboBox1DrawItem Control TWinCont
  • 如何将 REST API 与 FireMonkey 结合使用?

    我需要在 FireMonkey 中实现 REST API 来获取一些信息 但我不确定如何做到这一点 REST API使用OAuth2 我可以访问两个代码 Consumer Key和Consumer Secret 之后 我需要获得一个临时的
  • 有人用CrossKylix进行真正的跨平台开发吗?

    新版本克罗斯凯利克斯 http crosskylix untergrund net 两周前更新过 即使 Kylix 已经停产很久了 但它似乎仍然被一些 Delphi 开发人员使用 有人在 Windows 和 Linux 的跨平台开发中成功使
  • 用埃拉托斯特尼筛法寻找素数(原文:有更好的方法来准备这个数组吗?)

    Note 下面的版本 2 使用埃拉托斯特尼筛法 有几个答案对我最初提出的问题有所帮助 我选择了埃拉托斯特尼筛法 实施了它 并适当地更改了问题标题和标签 感谢所有提供帮助的人 介绍 我编写了这个奇特的小方法 它生成一个包含小于指定上限的素数的
  • 当responseText包含有效的Xml时,IXMLHttpRequest.responseXml为空,没有解析错误

    我正在从中获取一些 XML政府网站 http www bankofcanada ca stats assets rates rss noon en all xml http www bankofcanada ca stats assets
  • 将数据从一个数据集结构移动到另一个数据集结构的更快方法(在 TDatasetProvider 中)

    我有一个自定义的 TDatasetProvider 它允许为其提供的任何数据创建新字段 因此 假设您在原始数据集上获得了以下字段 客户ID Name Age 您需要使用显示位图在 DBGrid 上选择它 好吧 你可以 因为我的 DSP 可以
  • JavaScript 中的埃拉托斯特尼筛法对大量数据无限运行

    我一直在尝试写埃拉托斯特尼筛法 http en wikipedia org wiki Sieve of EratosthenesJavaScript 中的算法 基本上我只是按照以下步骤操作 创建从 2 到 n 1 的连续整数列表 令第一个素
  • Mac 上的 Delphi - 可能吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我负责一个 Delphi Win32 项目管理应用程序 我刚刚完成了向 Delphi 2009 的迁移
  • 在 Delphi 中编程延迟的最佳方法是什么?

    我正在开发的 Delphi 应用程序必须延迟一秒 有时甚至两秒 我想使用最佳实践来对此延迟进行编程 在阅读 stackoverflow 上有关 Delphi Sleep 方法的条目时 我发现了以下两条评论 我遵循这样的格言 如果你觉得需要使
  • TListView 中的中心子项目图像

    Is it possible to fix the drawing of subitem images in a TListView so that they are not cut off on the left hand side as
  • Delphi 将面板流传输至文件

    今天我有一个关于将表单的一部分流式传输到文件的问题 在此示例中 我使用 Tmemo 而不是文件来查看流 这是我的表格 表单右上角的面板有一些控件 如标签 编辑等 使用 保存面板 按钮将面板保存在 TStream 上 这里是代码 proced
  • 为什么 Delphi 变体不能保存对象?

    为什么 Delphi 变体不能保存对象 更重要的是 这种限制背后的原因是什么 你绝对可以storeVariant 变量中的对象 只需将其转换为 NativeUInt 无论如何 对象只是一个指针 obj TObject Create v Na
  • delphi THashSHA2 在大文件上返回错误的 SHA256

    Data Cloud CloudAPI pas has class function TCloudSHA256Authentication GetStreamToHashSHA256Hex const Content TStream str

随机推荐

  • 合并多个 cv::Mat?

    基本上我有 3 个这样的垫子 Mat descriptors1 Mat descriptors2 Mat descriptors3 每个描述符的加载方式如下 extractor gt compute object kp descriptor
  • 如何在 Scala 中为具有构造函数参数的 Actor 创建 TestActorRef?

    The Akka 测试文档 http doc akka io docs akka snapshot scala testing html给出以下创建 TestActorRef 的方法 import akka testkit TestActo
  • 在 R 中并行训练多个网络(使用 Keras)

    我想在 R 中训练 n 个不同的神经网络parallel 我怎样才能做到这一点 我对并行化相当陌生 所以我发现这有点困难 这是我的 1 个网络的代码 到目前为止 model lt keras model sequential Define
  • 按列对 Pandas DataFrame 进行排序

    如何按列对 pandas 数据框进行排序 我在这里读到http pandas pydata org sort values http pandas pydata org pandas docs version 0 19 2 generate
  • MigLayout 对齐中心不会使 JLabel 组件居中

    我在用米格布局 http www miglayout com 我发现它很灵活等 但我在用它居中放置东西时遇到问题 我尝试使用gapleft 50 但似乎百分比数字需要根据不同的帧大小进行更改 因为它也取决于组件的大小 所以如果组件使用居中g
  • 如何在编译时设置 Electron 变量?

    我正在使用 electro builder 来打包 React 应用程序 我的应用程序使用 create react app 样板 有没有一种方法可以在编译时设置变量 以便可以在运行时在主进程的代码内的条件中使用它 我正在寻找 C 预处理器
  • Woocommerce 仅显示可变产品的一种折扣价格

    这是我的 WooCommerce 网站 sweetworldcandy com 问题是 可变产品价格中的最低和最高 值显示我想要的是 如果产品不打折 则显示最低价值 如果产品打折 则通过添加斜杠作为删除标签 显示最低价值和报价的最低价值 我
  • 如何将一个单词拆分为二元组,包括重复的单词?

    我正在尝试将一个单词分成二元组 我正在使用qlcMatrix包 但它只返回不同的二元组 例如 对于单词 detected 它只返回 te 一次 这是我使用的命令 test domain lt c detected library qlcMa
  • 用于存储 jQuery 解析信息的最佳 HTML 属性是什么?

    必须支持 IE6 并且必须验证与 XHTML Strict 1 0 这个很难解释 我使用通用类名来启动关联元素上的插件功能 我还希望将选项与存储在属性中的元素关联 a href url com class popup My Link a 这
  • Git 准备好被推荐给我的老板了吗? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我想向我的老板推荐 Git 作为一个新的源代码控制系统 因为我们还停留在 90 年代的 VSS 哎哟 但是这些工具和第 3 方支持是否足够好 具体来说
  • Angular 4 到 5 更新 ./node_modules/@angular/core/esm5/core.js 中的警告

    我已根据此更新了 Angular 4 至 5tutorial https hackernoon com understanding creating and subscribing to observables in angular 426
  • JobIntentService 与 JobService 有何关系?

    的情况下Service and IntentService主要区别是Service在主线程上运行 同时IntentService不是 当工作完成时后者会自行完成 而我们必须调用stopService or stopSelf 停止一个Serv
  • mysql 获取一天的总工作时间

    我有一个 MySQL 表 其中记录了员工登录和注销时间 这里的in out列中1 代表登录 0 代表注销 id User id Date time in out 1 1 2011 01 20 09 30 03 1 2 1 2011 01 2
  • Mapbox 决定重叠顺序

    I have some features on the map displayed as icons I want to decide which icons should be hidden and which should be dis
  • 不同函数中同名的静态变量如何被系统识别?

    AFAIK 我们可以在不同的函数中有两个同名的静态变量吗 编译器和符号表如何管理它们 他们的身份如何单独管理 编译器不会将静态变量的名称存储在链接符号表中 就链接器而言 它们只是模块的一部分的一些内存 这可能不是在所有情况下 100 正确
  • Spring Security:根据实体不同的身份验证方法

    第一篇文章在这里 希望我做得对 在一个项目中 我们有一个场景 其中有一个具有多个实体的 Web 应用程序 目前 登录是通过默认的 JDBC Spring Security 提供程序进行管理的 工作正常 对于新的需求 我们需要每个实体都可以有
  • 通过 Z3 C++ API 使用浮点运算

    我正在尝试使用 Z3 解决非线性实数问题 我需要 Z3 来生成多个解决方案 在问题域中 精度并不是关键问题 我只需要小数点后一位或两位小数 因此 我需要设置 Z3 不探索实数的所有搜索空间 以最大限度地减少找到多个解决方案的时间 我正在尝试
  • `git rebase` 不更新分支?

    我有这个 master foo v v bar A B C D v E F G 我要这个 master foo v v bar A B C D v E F G so I我认为我需要做 git checkout bar git rebase
  • 如果通常的“t()”不起作用,如何转置 r 中的矩阵?

    我有一个矩阵 我试图在 R 中转置 但 t 函数没有返回正确的答案 如何转置矩阵 gt xx matrix c 3 7 4 8 2 byrow TRUE gt xx 1 2 1 3 7 2 4 8 gt t xx 1 0 7071068 0
  • 如何在Delphi中检查素数

    我想将 1 到 10000 之间的所有素数读入一个动态数组 将所有非素数读入另一个动态数组 然后将素数数组读入richedit1到目前为止我有 procedure primearrays var j k l i m integer k is