我必须打印一些方法来表示给定数字,因为它是质数部分。
让我澄清一下:假设我得到了这个数字7。现在,首先,我必须找到所有小于7的质数,即2、3和5。现在,我可以用几种方式总结这些数字(我可以多次使用一个数字),以便结果等于7?例如,数字7有五种方式:
2 + 2 + 3
2 + 3 + 2
2 + 5
3 + 2 + 2
5 + 2
我完全迷失了这个任务。首先,我想我会像这样排列一个可用的元素数组:{2,2,2,3,3,5}(7/2 =
3,所以2必须出现3次。3也一样,得到2发生)。之后,遍历数组并选择一个“ leader”来确定我们在数组中的距离。我知道解释太可怕了,所以这是代码:
#include <iostream>
#include <vector>
int primes_all[25] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97};
int main()
{
int number;
std::cin >> number;
std::vector<int> primes_used;
for(int i = 0; i < 25; i++) {
if(primes_all[i] < number && number-primes_all[i] > 1) {
for(int k = 0; k < number/primes_all[i]; k++)
primes_used.push_back(primes_all[i]);
}
else break;
}
int result = 0;
for(size_t i = 0; i < primes_used.size(); i++) {
int j = primes_used.size()-1;
int new_num = number - primes_used[i];
while(new_num > 1 && j > -1)
{
if(j > -1) while(primes_used[j] > new_num && j > 0) j--;
if(j != i && j > -1) {
new_num -= primes_used[j];
std::cout << primes_used[i] << " " << primes_used[j] << " " << new_num << std::endl;
}
j--;
}
if(new_num == 0) result++;
}
std::cout << result << std::endl;
system("pause");
return 0;
}
这根本行不通。仅仅是因为背后的想法是错误的。以下是有关限制的一些详细信息:
另外,可以给出的最大数字是100。这就是为什么我将质数的数组设置为低于100的原因。当给定数字变大时,结果增长很快,以后需要BigInteger类,但这不是问题。
一些已知结果:
Input Result
7 5
20 732
80 10343662267187
所以…有什么想法吗?这是一个综合问题吗?我不需要代码,只是一个想法。我仍然是C ++的新手,但我会设法
请记住,3 + 2 + 2与2 + 3 + 2是不同的。此外,如果给定的数字本身是质数,则不会计算在内。例如,如果给定的数字为7,则只有这些总和有效:
2 + 2 + 3
2 + 3 + 2
2 + 5
3 + 2 + 2
5 + 2
7 <= excluded
动态编程是您的朋友。
考虑数字27。
如果7具有5个结果,而20具有732个结果,则您知道27至少具有(732 * 5)个结果。您可以使用两个变量系统(1 + 26、2 + 25
…等),并随便使用预先计算的值。您不必重新计算25或26,因为您已经进行了计算。
问题内容: 好的,我的问题不是如何确定数字是否为质数,因为我想我已经知道了,但是更多的是如何使其正确显示。 这是我的代码: 现在我的问题是,如果数字最终等于9,它会说它是质数,而不是。我认为问题在于中断在一个循环后就停止了它,因此它不会递增变量p,因此仅测试除以2(我认为)。但是,如果我删除断点,它将在每次通过时打印出“和不是素数”,直到退出循环为止。不知道该怎么办。 问题答案: 查找数字是否为素
问题内容: 我正在尝试编写一种方法,该方法将计算两个数字是否是赋值的相对质数。我主要是在寻找从哪里开始的答案。我知道有一种方法可以为我做很多事情,但是赋值几乎使我无需使用gcd或数组就可以做到。 我有点开始了,因为我知道我将不得不在for循环中使用运算符。 显然,此方法仅将返回,或者因为该函数仅将根据这两个数字是否相对质数来打印特定行。 我想我可能不得不写两个循环,无论是和,可能还有一些类型的语句
本文向大家介绍JavaScript中数字的质数和,包括了JavaScript中数字的质数和的使用技巧和注意事项,需要的朋友参考一下 我们需要编写一个以数字作为第一个也是唯一的参数的JavaScript函数。然后,该函数应将所有为质数的数字相加,然后将总和作为数字返回。 例如- 如果输入号码是- 那么输出应该是- 因为7 + 7 + 5 + 2 = 21 − 示例 以下是代码- 输出结果 以下是控制
我写了一个程序,将数字分解为它的质因数,然后将它们存储在一个向量中,最后询问是否通过将它们相乘来验证结果。 它的工作方式是这样的:要求一个数字(代码中的),然后将其除以2及以上。 如果它找到一个模(当mod时)为零的数字(代码中的 ),则将该除数存储到一个向量中,并将其除以 ,然后将其存储到 中,然后将除数重置为1(而 循环中的最后一条语句将其递增为2)。如果没有找到这样的数字, 将增加,直到它大
本文向大家介绍JavaScript判断数字是否为质数的方法汇总,包括了JavaScript判断数字是否为质数的方法汇总的使用技巧和注意事项,需要的朋友参考一下 前言 今天看到一个题目,让判断一个数字是否为质数.看上去好像不难.因此,我决定实现一下. DOM结构 如上所示,我们通过 isPrimeNum(num) 函数,来实现判断是否为质数.下面我们来实现这个函数. 通过FOR循环来判断是否为质数
所以我有一个问题,当我计算一个数字时,比如说15,我必须显示这个:15=3x5,但我得到的是3x5x5,我不知道如何使它变成这样,所以它只显示3x5。还有一个问题是,我输入的数字是否是素数。有办法解决这个问题吗?我只需要这些,然后再编辑其他东西。
问题内容: 我在RosettaCode上找到了以下Java代码示例: 我不是特别了解Java,但除了正则表达式本身以外,都了解此代码段的所有方面 当您在内置PHP函数中找到它时,我对Regex有了基本的了解。 素数如何匹配? 问题答案: 您说您了解这部分,但仅强调一下,生成的字符串的长度等于提供的数字。因此,当且仅当字符串包含三个字符。 正则表达式的第一部分说:“任何字符,零次或一次”。因此,基本
本文向大家介绍编写Golang程序以检查给定数字是否为质数,包括了编写Golang程序以检查给定数字是否为质数的使用技巧和注意事项,需要的朋友参考一下 定义: 一个数字是大于2且只能被其自身和1整除。 示例:素 数是2、3、5、7、11、13、113、119等。 解决这个问题的方法 步骤1:找到给定数字的平方根sq_root =√num 步骤2:如果给定数字可被[2,sq_root]所属的数字整除