小于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)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
编写一个C程序,演示指针的示例
上一篇 2025年12月17日 22:38:30
如何使用C++中的最大公约数算法
下一篇 2025年12月17日 22:38:43

相关推荐

  • 前端危!Gemini 3 内测结果获网友一致好评,“有史以来最强前端开发模型”

    前端危!Gemini 3 内测结果获网友一致好评,“有史以来最强前端开发模型”前端危!Gemini 3 内测结果获网友一致好评,“有史以来最强前端开发模型”前端危!Gemini 3 内测结果获网友一致好评,“有史以来最强前端开发模型”前端危!Gemini 3 内测结果获网友一致好评,“有史以来最强前端开发模型”

    谷歌下一代旗舰模型gemini 3未发布便已悄然走红! 原因很简单:强,实在是太强了。 在国外社交媒体平台上,一大波网友激动地分享了 Gemini 3 的内测结果—— 从曝光的这些案例来看,Gemini 3尤为擅长前端、SVG 矢量图生成,而且多模态能力变得更强。 立即学习“前端免费学习笔记(深入)…

    2026年9月23日 用户投稿
    100
  • Linux文件和目录管理常见命令

    Linux文件和目录管理依赖于ls、cd、mkdir、rm、cp、mv等核心命令,用于浏览、创建、删除、复制和移动文件与目录;通过find、du、grep等命令可查找文件、定位大文件并清理磁盘空间;使用rename、mmv或脚本可实现批量重命名;为安全起见,应谨慎使用rm命令,推荐结合-i选项或使用…

    2026年9月21日
    100
  • idea恢复初始化

    答案:通过关闭IDEA并删除配置、缓存目录及插件数据,可将其重置为初始状态。具体步骤依次为:彻底退出程序;删除系统中对应的JetBrains文件夹(Windows在AppData,macOS在Library,Linux在.config和.cache);可选删除项目中的.idea和.iml文件;重启后…

    2026年9月20日
    000
  • Linux输出文本echo命令应用

    echo命令不仅能输出文本,还可结合变量、转义序列和重定向实现动态内容生成、文件创建与追加、配置修改、管道处理及脚本调试,其行为在Bash、Zsh和Dash等shell中因内置实现不同而存在差异,尤其在转义序列处理上需注意使用-e选项或改用printf以保证一致性。 echo 命令在 Linux 中…

    2026年9月20日
    000
  • idea如何回到上一步

    使用快捷键可快速返回上一步操作位置:Windows/Linux为Ctrl+Alt+←,macOS为Cmd+Option+←,该操作称为“Back”,适用于跳转后返回原代码位置。 在使用 IntelliJ IDEA 时,如果想回到上一步的操作位置,比如刚才编辑或查看的代码位置,可以通过以下几种方式快速…

    2026年9月20日
    300
  • 打开DeepSeek官网 deepseek在线版立即使用

    DeepSeek官网在线版可通过https://www.deepseek.com访问,用户点击“开始对话”即可使用智能对话、代码生成、长文本处理等功能,开发者还可申请API密钥集成至自有系统,支持多语言调用与安全配置。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepS…

    2026年9月12日
    200
  • Linux命令行中pwd、cd命令的完整讲解

    pwd命令显示当前目录的完整路径,cd命令用于切换目录。例如pwd输出如/home/alice/Documents;cd /path/to/dir切换到指定路径,cd ..返回上一级,cd ~回到用户家目录,cd -在最近两个目录间切换,配合使用可高效导航文件系统。 pwd 和 cd 是 Linux…

    2026年9月10日
    200
  • VSCode快捷键:键盘流操作大全

    掌握VSCode快捷键可实现键盘流编程,提升效率。1. 快速导航:Ctrl+P打开文件,Ctrl+Tab切换标签,Ctrl+G跳转行号,F12跳转定义,Alt+←/→返回光标位置;2. 高效编辑:Ctrl+D多选单词,Ctrl+L选行,Shift+Alt+方向复制行,Ctrl+Shift+K删除行,…

    2026年9月10日
    100
  • VSCode语言支持:多编程环境配置

    首先安装各语言官方扩展并配置解释器路径,再通过launch.json设置调试参数,结合tasks.json定义构建任务,最后统一代码风格实现高效多语言开发。 VSCode 本身是一个轻量级但功能强大的代码编辑器,支持多种编程语言。要实现多编程环境的高效开发,关键在于正确配置语言支持和相关工具链。下面…

    2026年9月9日
    200
  • VSCode注释文档生成工具配置

    VSCode中通过Document This插件和ESLint集成可快速生成JSDoc注释;2. 安装插件后使用Ctrl+Alt+D快捷键自动生成函数、类的注释模板;3. 可自定义作者、日期等模板字段并结合eslint-plugin-jsdoc强制规范注释,提升代码可读性与维护性。 VSCode 中…

    2026年9月9日
    300
  • idea 恢复默认

    重置IntelliJ IDEA需删除配置和缓存目录以恢复默认设置。首先关闭软件,删除Windows下C:Users用户名AppDataRoamingJetBrainsIntelliJIdea或macOS/Linux对应路径的IntelliJIdea文件夹;推荐同时清除Local或Caches下的缓存…

    2026年9月9日
    400
  • VS Code语言支持:嵌入式语言与语法注入配置

    嵌入式语言和语法注入可提升VS Code对多语言文件的处理能力。通过embeddedLanguages配置,编辑器能将特定文本(如字符串)按目标语言高亮,例如将string.regexp映射为regex语言;语法注入则利用TextMate规则将一种语言的解析规则注入到另一种语言的作用域中,如在Han…

    2026年9月9日
    100
  • Claude 4.5 刚刚发布,能连肝 30 多个小时,史上最卷 AI 诞生

    Claude 4.5 刚刚发布,能连肝 30 多个小时,史上最卷 AI 诞生Claude 4.5 刚刚发布,能连肝 30 多个小时,史上最卷 AI 诞生Claude 4.5 刚刚发布,能连肝 30 多个小时,史上最卷 AI 诞生Claude 4.5 刚刚发布,能连肝 30 多个小时,史上最卷 AI 诞生

    论编程能力的极致内卷,还得看 Anthropic 的 Claude。 就在今天,Anthropic 正式推出全新升级版模型——Claude Sonnet 4.5。 先看硬核表现:在衡量真实编码实力的 SWE-bench Verified 测试中,Claude Sonnet 4.5 一举登顶榜首,成为…

    2026年9月8日 用户投稿
    200
  • Linux sticky bit命令示例

    Sticky Bit是一种特殊权限,用于目录以限制文件删除权限,仅允许文件所有者、目录所有者或root用户删除或重命名其中文件;在ls -l输出中以t或T表示,可通过chmod +t或chmod 1777设置,用chmod -t或chmod 777取消,常用于/tmp等公共可写目录,防止用户误删他人…

    2026年9月8日
    200
  • ThinkPHP6中的依赖注入

    依赖注入是现代php开发中非常重要的概念,它可以帮助开发者更好地管理类之间的依赖关系,提高代码的可扩展性和可重用性。在php框架thinkphp6中,依赖注入也得到了很好的支持。 在ThinkPHP6中,我们可以通过注解方式或配置文件的方式进行依赖注入。下面我们具体来看一下这两种方式的使用方法。 首…

    用户投稿 2026年9月7日
    200
  • 利用ThinkPHP6实现路由分组

    在现代web开发中,路由是一个至关重要的组成部分。它帮助我们将请求映射到相应的控制器方法,并且可以根据不同的url路径来执行不同的操作。在一些复杂的应用中,可能需要将路由进行分组,以便更好地组织和管理。本文将介绍如何在thinkphp6中实现路由分组。 ThinkPHP6是一款基于PHP的高性能We…

    用户投稿 2026年9月7日
    000
  • 在ThinkPHP6中使用远程调试

    thinkphp6是一个易于学习且功能强大的php框架。在开发项目时,很可能会面临一些难以定位的问题,如数据库连接问题、代码错误等。为了解决这些问题,我们需要调试程序。在这篇文章中,我们将介绍如何在thinkphp6中使用远程调试。 什么是远程调试? 远程调试是一种在不同计算机或设备之间的调试技术。…

    用户投稿 2026年9月7日
    100
  • Linux Shell编程的实例教程

    awk [-field-separator] ‘commands’ input-file(s) 基本模式 awk -F’:’ …  使用#分隔 awk ‘{print $0}’ a.txt  立即进入“豆包AI人工智…

    用户投稿 2026年9月7日
    200
  • Yii框架的一些基础知识

    yii是一款流行的面向对象php框架,它的全称是“yes it is”,表示“是的,它就是这样的”。它的设计目标是高效、快速、安全和易于使用,因此被广泛应用于大型web应用程序的开发中。在这篇文章中,我们将介绍yii框架的一些基础知识,帮助新手更好地了解这个框架。 MVC架构 Yii框架采用了基于M…

    用户投稿 2026年9月5日
    100
  • 详解华为手机微信分身操作步骤

    华为手机微信分身功能是指在手机上同时登录两个微信账号,并且能够实现两个微信账号的隔离使用。这项功能能够帮助用户更方便地管理工作和个人生活,避免混淆。下面将详细介绍在华为手机上如何进行微信分身操作。 步骤一:进入手机设置 首先,打开华为手机的主屏幕,在桌面上找到“设置”应用,点击进入。 步骤二:查找“…

    用户投稿 2026年9月5日
    000

发表回复

登录后才能评论
关注微信