Generating a sequence using prime numbers 2, 3, and 5 only, and then displaying an nth term (C++)(仅使用素数 2、3 和 5 生成序列,然后显示第 n 项 (C++))
问题描述
我正在解决一个问题,该问题要求使用素数 2、3 和 5 生成一个序列,然后显示序列中的第 n 个数字.所以,如果我让程序显示第 1000 个数字,它应该显示它.
I'm working on a problem that asks to generate a sequence using prime numbers 2, 3, and 5, and then displaying then nth number in the sequence. So, if I ask the program to display the 1000th number, it should display it.
我不能使用数组或类似的东西,只能使用基本的决策和循环.
I can't be using arrays or anything like that, just basic decisions and loops.
我开始研究它并碰壁......这就是我得到的:
I started working on it and hit a wall... here's what I got:
#include <iostream>
using namespace std;
int main() {
unsigned int n=23;
for(int i=2; i<n; i++){
if(i%2==0){
cout<<i<<", ";
}else if(i%3==0){
cout<<i<<", ";
}else if(i%5==0){
cout<<i<<", ";
}
}
return 0;
}
不幸的是,该代码不能满足要求.它显示数字如 14,其中包括一个素数 7.... 这些数字只能除以 3 个指定的素数 (2,3,5).
Unfortunately, that code doesn't do what's required. It displays numbers such as 14, which includes a prime number 7.... The numbers can only be divided by the 3 specified primes (2,3,5).
我发现了一些我想要理解的信息,但到目前为止还不确定如何实现它......也许使用了很多 for() 循环?所以,看来我必须使用 2^n * 3^m * 5^k 的概念,其中 n+m+k>0.
I found some information that I'm trying to understand, and so far not sure how to implement it... maybe using lots of for() loops? So, it appears I have to use the concept of 2^n * 3^m * 5^k where n+m+k>0.
我想我必须通过一个测试来运行一个数字,它首先检查它是否可以被 2^1 * 3^0 * 5^0 整除,然后是 2^0 * 3^1 * 5^0,然后是 2^0 * 3^0 * 5^1,依此类推......只是不知道从哪里开始.
I guess I have to run a number through a test where it checks to see first if it's fully divisible by 2^1 * 3^0 * 5^0, then 2^0 * 3^1 * 5^0, then 2^0 * 3^0 * 5^1, and so on... Just not sure where to begin.
推荐答案
勾选这个.
#include <iostream>
using namespace std;
int IsPrime(int var);
int CheckifPrimeGreaterThaFive(int Num);
int GetFactors(int Num)
{
int i =0,j=0;
for (i =2,j=0; i <= Num; i++)
{
if (Num%i == 0)
{
if (1 == CheckifPrimeGreaterThaFive(i))
{
return 1;
}
}
}
return 0;
}
int CheckifPrimeGreaterThaFive(int Num)
{
if ((Num != 2 && Num != 3 && Num != 5) && IsPrime(Num))
{
return 1;
}
return 0;
}
int IsPrime(int var)
{
for (int i = 2; i <= var/2; i++)
{
if (var % i == 0)
return 0;
}
return 1;
}
int main() {
int n=98;
int i, FactorsCount=0;
for(i=2; i<n; i++)
{
if (0 == GetFactors(i))
{
cout<<" "<<i;
}
}
return 0;
}
这篇关于仅使用素数 2、3 和 5 生成序列,然后显示第 n 项 (C++)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:仅使用素数 2、3 和 5 生成序列,然后显示第 n 项 (C++)
基础教程推荐
- 从 std::cin 读取密码 2021-01-01
- 使用从字符串中提取的参数调用函数 2022-01-01
- 为什么语句不能出现在命名空间范围内? 2021-01-01
- 管理共享内存应该分配多少内存?(助推) 2022-12-07
- 如何在不破坏 vtbl 的情况下做相当于 memset(this, ...) 的操作? 2022-01-01
- Windows Media Foundation 录制音频 2021-01-01
- 在 C++ 中循环遍历所有 Lua 全局变量 2021-01-01
- 如何使图像调整大小以在 Qt 中缩放? 2021-01-01
- 如何“在 Finder 中显示"或“在资源管理器中显 2021-01-01
- 为 C/C++ 中的项目的 makefile 生成依赖项 2022-01-01