小于n的立方数自由数

小于n的立方数自由数

无立方因子的数是指那些没有立方数作为因子的数。

立方数因子是指一个整数,它是一个立方数并且能够整除该数而没有余数。

例如,8是16的立方数因子,因为8是2的立方数(2*2*2 = 8),并且8除以16的余数为零。

因此,8和16都不是无立方数。

问题陈述

找出所有小于给定数字n的无立方数。

Example

的翻译为:

示例

Let's understand the problem with an example.Let n = 15,Thus, we have to find all the numbers less than 15 that are cube-free.The solution will be:  2,3,4,5,6,7,9,10,11,12,13,14.For another example,Let n = 20.The numbers are 2,3,4,5,6,7,9,10,11,12,13,14,15,17,18,19.

Explanation

的中文翻译为:

解释

注意,列表中没有1、8和16。因为1和8本身就是立方数,而16是8的倍数。

有两种方法来解决这个问题。

方法一:暴力法

暴力破解的方法如下:

遍历所有数字直到n。

对于每个数字,遍历其所有的除数。

如果一个数的任何一个因数是一个立方数,那么这个数就不是无立方数。

否则,如果这些数的除数中没有一个是立方数,那么它就是一个无立方数。

打印数字。

Example

的翻译为:

示例

The program for this approach is as follows −

下面是一个C++程序,用于打印小于给定数字n的所有无立方数。

#includeusing namespace std;// This function returns true if the number is cube free.// Else it returns false.bool is_cube_free(int n){   if(n==1){      return false;   }   //Traverse through all the cubes lesser than n   for(int i=2;i*i*i<=n ;i++){      //If a cube divides n completely, then return false.      if(n%(i*i*i) == 0){         return false;      }   }   return true;}int main(){   int n = 17;   cout<<"The cube free numbers smaller than 17 are:"<<endl;   //Traverse all the numbers less than n   for(int i=1;i<n;i++){      //If the number is cube free, then print it.      if(is_cube_free(i)){         cout<<i<<" ";      }   }}

输出

The cube free numbers smaller than 17 are:2 3 4 5 6 7 9 10 11 12 13 14 15

方法二:埃拉托斯特尼筛法技术

解决这个问题的高效方法将是埃拉托斯特尼筛法的概念。

它用于找出小于给定限制的素数。在这里,我们将筛选出不是立方数的数字来得到我们的解决方案。

方法如下−

创建一个大小为n的布尔列表。

将所有数字标记为true。这意味着我们目前已将所有数字标记为无立方数。

遍历所有小于n的可能的立方体。

遍历所有小于n的立方数的倍数。

将列表中所有这些倍数标记为假。这些数字不是立方数自由的。

遍历列表。打印列表中仍为真的数字。

输出将包括所有小于n的无立方数。

Example

的翻译为:

示例

The program for this approach is as follows −

下面是一个使用埃拉托斯特尼筛法打印小于给定数n的所有无立方数的C++程序。

#include#includeusing namespace std;//Find which numbers are cube free and mark others as false in the vector.void find_cube_free(vector&v, int n){   //Traverse through all the numbers whose cubes are lesser than n   for(int i=2;i*i*i<n;i++){            //If i isn't cube free, it's multiples would have been marked false too      if(v[i]==true){         //Mark all the multiples of the cube of i as not cube free.         for(int j=1;i*i*i*j<n;j++){            v[i*i*i*j] = false;         }      }   }}int main(){   int n = 15;      //Vector to store which numbers are cube free   //Initially, we set all the numbers as cube free   vectorv(n,true);   find_cube_free(v,n);   cout<<"The cube free numbers smaller than are:"<<endl;      //Traverse the vector and print the cube free numbers   for(int i=2;i<n;i++){      if(v[i]==true){         cout<<i<<" ";      }   }}

输出

The cube free numbers smaller than are:2 3 4 5 6 7 9 10 11 12 13 14

本文解决了找到小于n的无立方数的问题。我们看到了两种方法:一种是蛮力法,另一种是使用埃拉托斯特尼筛法的高效方法。

C++程序提供了这两种方法的实现。

以上就是小于n的立方数自由数的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1445570.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 22:38:30
下一篇 2025年12月13日 17:00:00

相关推荐

  • 在C语言中,fork()函数

    在本节中,我们将了解C语言中的fork系统调用。这个fork系统调用用于创建一个新的进程。这个新创建的进程被称为子进程。创建另一个子进程的当前进程被称为父进程。 子进程使用相同的程序计数器、CPU寄存器和父进程使用的相同文件。 fork()函数不接受任何参数,它返回整数值。它可能返回三种类型的整数值…

    2025年12月17日
    000
  • 找到在将一个二进制字符串清空(通过移除非空子字符串)后,0的数量最少的玩家

    在本文中,我们将讨论一个有趣的问题,涉及到字符串操作和博弈论领域:“通过删除非空子字符串来清空二进制字符串,找到剩余0最少的玩家”。这个问题探索了使用二进制字符串进行竞技游戏的概念。我们的目标是在游戏结束后找出剩余0最少的玩家。我们将讨论这个问题,提供一个C++代码实现,并通过一个例子来解释这个概念…

    2025年12月17日
    000
  • 在C++中,将以下内容翻译为中文:寻找长度和宽度之间差异最小的矩形

    给定一个矩形区域作为输入。目标是找到矩形的边,使长度和宽度之间的差异最小。 矩形的面积 = 长度 * 宽度。 示例 输入− 面积 = 100 输出− 差异最小的矩形边: 长度 = 10,宽度 = 10 立即学习“C++免费学习笔记(深入)”; 解释− 面积 = 100 的边。 2 – 5…

    2025年12月17日
    000
  • 盗贼跨越墙壁所需的跳跃次数

    想象一下一个囚犯(或小偷)想要从监狱逃脱。为了做到这一点,他需要越过 N 个长度不同的墙。他每次跳跃可以爬升 X 英尺。但是,由于墙壁很滑,他每次跳跃后会下滑 Y 英尺。因此,我们需要计算穿越所有墙壁所需的跳跃次数。在本文中,我们将探讨不同的C++技术,以找到逃脱监狱所需的跳跃次数。 输入输出场景 …

    2025年12月17日
    000
  • C中的空指针

    C 中的 void 指针是不与任何数据类型关联的指针。它指向存储中的某个数据位置,意味着指向变量的地址。它也称为通用指针。在 C 语言中,malloc() 和 calloc() 函数返回 void * 或通用指针。 它有一些限制 – 1) 由于 void 指针的原因,指针运算不可能使用 …

    2025年12月17日
    000
  • 加密字符串

    加密是一种通过使用某些技术或某些步骤来更改数据的技术,使其更改为另一种信息或无法直接从中收集到先前的信息。对于加密,我们必须遵循针对特定加密类型固定的某些步骤。 在这个问题中,我们将得到一个字符串,我们必须按照给定的步骤对其进行加密 – 首先,我们必须获取包含相同字符的所有子字符串,并将…

    2025年12月17日
    000
  • 二叉堆的数组表示

    遵循堆排序属性的完全二叉树称为二叉堆。 根据二叉堆的排序方式,它可以分为两种类型: 最小堆是节点的值大于或等于其父节点的值的堆。最小堆的根节点最小。 最大堆是节点的值小于或等于其父节点的值的堆。最大堆的根节点最大。 二叉堆的值通常表示为一个数组。二叉堆的数组表示如下: 根元素的索引为0。 如果i是数…

    2025年12月17日
    000
  • 可憎的数字

    如果一个数字在其二进制展开中有奇数个1,则被认为是奇异数。前10个奇异数是1,2,4,7,10,11,13,14,16,19,21。有趣的是,所有2的幂都是奇异数,因为它们只有1个位被设置。 下面的文章详细讨论了两种判断一个数字是否为可恶数字的方法。 问题陈述 这个问题的目的是检查给定的数字是否是一…

    2025年12月17日
    000
  • 检查是否可能从原点到达给定圆的周长上的任意点

    圆的周长可以定义为圆的外边界。它是圆的周长。圆周围的每个点都遵循某些属性,如下所示 – 点 (x,y) 位于圆内,使得 $mathrm{x^2 + y^2 点 (x,y) 位于圆上,使得 $mathrm{x^2 + y^2 = R^2}$ 点 (x,y) 位于圆外,使得 $mathrm{…

    2025年12月17日
    000
  • 使用C++编写一个找到数字的程序,其数字的各位数之和为偶数的程序

    能被2整除的整数是偶数。因此在本文中,我们给定了一个数n,我们需要找到第n个数字,其数字之和为偶数。前五个数字的数字之和为偶数的数分别是2、4、6、8和11。例如 − Input : n = 5Output : 11Explanation : First 5 numbers with even su…

    2025年12月17日
    000
  • 在C和C++中的未定义行为

    在这里,我们将看到一些C和C++代码,并尝试猜测结果。这些代码将生成一些运行时错误。 1. 除以零的错误是未定义的。 示例代码 #include using namespace std;int main() { int x = 10, y = 0; int z = x / y; cout <&…

    2025年12月17日
    000
  • C语言中的数组

    数组是连续内存位置上相同类型元素的集合。最低地址对应于第一个元素,最高地址对应于最后一个元素。 数组索引以零 (0) 开始,以数组大小减一(数组大小 – 1)结束。数组大小必须是大于零的整数。 让我们看一个例子, If array size = 10First index of arra…

    2025年12月17日
    000
  • .NET控制台应用程序开发:不仅仅是“Hello World”

    现代.NET控制台程序可处理文件、调用API、读取配置、执行定时任务,支持命令行参数解析、配置文件管理、日志记录与外部服务调用,结合合理结构可成为高效工具。 很多人接触 .NET 的第一行代码都是从控制台程序的 “Hello World” 开始的。这确实是个不错的起点,但如果…

    2025年12月17日
    000
  • .NET怎么在程序中执行一个外部exe文件

    使用System.Diagnostics.Process类可执行外部exe文件,通过Process.Start启动进程,支持简单调用和ProcessStartInfo配置参数、工作目录、窗口行为及输出重定向,需注意路径、权限和异常处理。 在 .NET 程序中执行外部 exe 文件,最常用的方式是使用…

    2025年12月17日
    000
  • .NET怎么将一个整数转换为十六进制字符串

    在.NET中,使用ToString(“X”)可将整数转为大写十六进制字符串,如255转为”FF”;用ToString(“x”)则转为小写,如”ff”;可通过拼接添加”0x”前缀,如…

    2025年12月17日
    000
  • .NET怎么通过反射获取对象的属性和方法

    答案:在.NET中,通过反射可动态获取类型信息并操作对象成员。使用GetType()或typeof()获取Type对象,调用GetProperties()遍历属性并用GetValue/SetValue读写值,通过GetMethods()获取方法并用Invoke执行,支持参数传递;需注意性能开销及默认…

    2025年12月17日
    000
  • .NET Web API如何使用Swagger生成API文档

    在 .NET Web API 中集成 Swagger 可自动生成可交互的 API 文档。首先通过 NuGet 安装 Swashbuckle.AspNetCore 包,然后在 Program.cs 中添加 AddEndpointsApiExplorer() 和 AddSwaggerGen() 服务,并…

    2025年12月17日
    000
  • .NET的AssemblyFileVersionAttribute类的作用是什么?

    AssemblyFileVersionAttribute用于指定程序集的文件版本,主要在文件系统中显示,不影响运行时;而AssemblyVersionAttribute定义程序集的逻辑版本,影响运行时加载和绑定,二者可独立设置,常用于区分发布版本与内部构建。 AssemblyFileVersionA…

    2025年12月17日
    000
  • .NET的AssemblyVersionCompatibility枚举如何设置兼容性?

    AssemblyVersionCompatibility枚举定义CLR处理程序集版本兼容性的策略,其值如MayChangeMinorVersions要求主版本匹配且次版本可升级,SameMajorVersion允许主版本相同下的任意次版本、内部版本和修订号,SameVersion则要求完全匹配,而S…

    2025年12月17日
    000
  • ArgumentOutOfRangeException如何避免?参数范围检查

    避免argumentoutofrangeexception的核心在于在方法入口处对参数进行预判和有效性检查,1. 使用if语句结合throw new argumentoutofrangeexception进行基础校验;2. 采用卫语句模式或静态辅助类(如guard)提升代码复用性和可读性;3. 在.…

    2025年12月17日
    000

发表回复

登录后才能评论
关注微信