Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 查找唯一因式分解的总数_C++ - Fatal编程技术网

C++ 查找唯一因式分解的总数

C++ 查找唯一因式分解的总数,c++,C++,我想求任意数的总因子。 在数论中,因式分解是将一个复合数分解成更小的非平凡因子,当它们相乘时等于原始整数。您的工作是计算一个数的唯一因式分解数(至少包含两个大于1的正整数) 例如:12有3个唯一的因子分解:2*2*3、2*6、3*4。注: 3*4和4*3没有区别 我试图找到那个,但并没有完全准确。 这是我的密码: #include<iostream> using namespace std; int count=0; void factor(int n,int c,int n1) {

我想求任意数的总因子。 在数论中,因式分解是将一个复合数分解成更小的非平凡因子,当它们相乘时等于原始整数。您的工作是计算一个数的唯一因式分解数(至少包含两个大于1的正整数)

例如:12有3个唯一的因子分解:2*2*3、2*6、3*4。注: 3*4和4*3没有区别

我试图找到那个,但并没有完全准确。 这是我的密码:

#include<iostream>
using namespace std;
int count=0;
void factor(int n,int c,int n1)
{
    for(int i=n1; i<n ; i++)
    {
        if(c*i==n)
            {count++;
            return;}
        else
        if(c*i>n)
            return;
        else
        factor(n,c*i,i+1);
    }
    return;
}
int main()
{
    int num,n;
    cin>>num;
    for(int i=0 ; i<num ; i++)
    {
        cin>>n;
        count=0;
        factor(n,1,1);
        cout<<count<<endl;
    }
    return 0;
}
#包括
使用名称空间std;
整数计数=0;
空隙系数(整数n、整数c、整数n1)
{
对于(int i=n1;in)
返回;
其他的
系数(n,c*i,i+1);
}
返回;
}
int main()
{
int num,n;
cin>>num;
对于(int i=0;i>n;
计数=0;
因子(n,1,1);

cout使用
mod
在尝试考虑以下因素时非常有用:

for(int i = 1; i <= fnum; ++i){ //where fnum is the number you wish to factor
    if(!(fnum % i)) ++count;
}
return count;

for(int i=1;i使用
mod
在尝试考虑以下因素时非常有用:

for(int i = 1; i <= fnum; ++i){ //where fnum is the number you wish to factor
    if(!(fnum % i)) ++count;
}
return count;

for(int i=1;i使用
mod
在尝试考虑以下因素时非常有用:

for(int i = 1; i <= fnum; ++i){ //where fnum is the number you wish to factor
    if(!(fnum % i)) ++count;
}
return count;

for(int i=1;i使用
mod
在尝试考虑以下因素时非常有用:

for(int i = 1; i <= fnum; ++i){ //where fnum is the number you wish to factor
    if(!(fnum % i)) ++count;
}
return count;

for(inti=1;i我认为您正在寻找一个数的唯一分解数。
对于这一点,我想你需要找到这个数的素数因子的个数

12 = 2, 2, 3
总计数=3; 对于2,2,3,我们需要

(2*2)*3  ~ 4*3
2*(2*3)  ~ 2*6
2*2*3    ~ 2*2*3
为了解决这个问题,我们在格里马尔迪、离散数学和组合数学中找到了一个想法。 要找到一个数的加法方法的数目(n)是2^(n-1)-1。对于3,我们有

3 =
1+1+1
2+1
1+2
总数=2^(3-1)-1=4-1=3

我们可以用类比来说明这一点

1+1+1 is equivalent to 2*2*3
1+2 is equivalent to 2*(2*3)
2+1 is equivalent to (2*2)*3

Say number of prime factors = n
So we have number of factorizations = 2^(n-1)-1
守则:

#include <stdio.h>
int power(int x, int y)
{
    int prod =1, i ;
    for(i=1; i<=y;i++) prod *= x;
    return prod;
}

int main()
{
    int number,div;    
    int count  = 0, ti, t;
    printf("Input: ");    
    scanf("%d",&t);
    for(ti=1; ti<=t;ti++)
    { 
        scanf("%d", &number);
        div = 2;count = 0;
        while(number != 0)
        {
            if(number%div!=0) div = div + 1;            
            else 
            {
                number = number / div;
                //printf("%d ",div);
                count++;
                if(number==1) break;
            }
        }
        printf("%d ", power(2,count-1)-1);
    }
    return 0;
}
#包括
整数幂(整数x,整数y)
{
int-prod=1,i;

对于(i=1;i我想你在寻找一个数的唯一因子分解数。 对于这一点,我想你需要找到这个数的素数因子的个数

12 = 2, 2, 3
总计数=3; 对于2,2,3,我们需要

(2*2)*3  ~ 4*3
2*(2*3)  ~ 2*6
2*2*3    ~ 2*2*3
为了解决这个问题,我们在格里马尔迪、离散数学和组合数学中找到了一个想法。 要找到一个数的加法方法的数目(n)是2^(n-1)-1。对于3,我们有

3 =
1+1+1
2+1
1+2
总数=2^(3-1)-1=4-1=3

我们可以用类比来说明这一点

1+1+1 is equivalent to 2*2*3
1+2 is equivalent to 2*(2*3)
2+1 is equivalent to (2*2)*3

Say number of prime factors = n
So we have number of factorizations = 2^(n-1)-1
守则:

#include <stdio.h>
int power(int x, int y)
{
    int prod =1, i ;
    for(i=1; i<=y;i++) prod *= x;
    return prod;
}

int main()
{
    int number,div;    
    int count  = 0, ti, t;
    printf("Input: ");    
    scanf("%d",&t);
    for(ti=1; ti<=t;ti++)
    { 
        scanf("%d", &number);
        div = 2;count = 0;
        while(number != 0)
        {
            if(number%div!=0) div = div + 1;            
            else 
            {
                number = number / div;
                //printf("%d ",div);
                count++;
                if(number==1) break;
            }
        }
        printf("%d ", power(2,count-1)-1);
    }
    return 0;
}
#包括
整数幂(整数x,整数y)
{
int-prod=1,i;

对于(i=1;i我想你在寻找一个数的唯一因子分解数。 对于这一点,我想你需要找到这个数的素数因子的个数

12 = 2, 2, 3
总计数=3; 对于2,2,3,我们需要

(2*2)*3  ~ 4*3
2*(2*3)  ~ 2*6
2*2*3    ~ 2*2*3
为了解决这个问题,我们在格里马尔迪、离散数学和组合数学中找到了一个想法。 要找到一个数的加法方法的数目(n)是2^(n-1)-1。对于3,我们有

3 =
1+1+1
2+1
1+2
总数=2^(3-1)-1=4-1=3

我们可以用类比来说明这一点

1+1+1 is equivalent to 2*2*3
1+2 is equivalent to 2*(2*3)
2+1 is equivalent to (2*2)*3

Say number of prime factors = n
So we have number of factorizations = 2^(n-1)-1
守则:

#include <stdio.h>
int power(int x, int y)
{
    int prod =1, i ;
    for(i=1; i<=y;i++) prod *= x;
    return prod;
}

int main()
{
    int number,div;    
    int count  = 0, ti, t;
    printf("Input: ");    
    scanf("%d",&t);
    for(ti=1; ti<=t;ti++)
    { 
        scanf("%d", &number);
        div = 2;count = 0;
        while(number != 0)
        {
            if(number%div!=0) div = div + 1;            
            else 
            {
                number = number / div;
                //printf("%d ",div);
                count++;
                if(number==1) break;
            }
        }
        printf("%d ", power(2,count-1)-1);
    }
    return 0;
}
#包括
整数幂(整数x,整数y)
{
int-prod=1,i;

对于(i=1;i我想你在寻找一个数的唯一因子分解数。 对于这一点,我想你需要找到这个数的素数因子的个数

12 = 2, 2, 3
总计数=3; 对于2,2,3,我们需要

(2*2)*3  ~ 4*3
2*(2*3)  ~ 2*6
2*2*3    ~ 2*2*3
为了解决这个问题,我们在格里马尔迪、离散数学和组合数学中找到了一个想法。 要找到一个数的加法方法的数目(n)是2^(n-1)-1。对于3,我们有

3 =
1+1+1
2+1
1+2
总数=2^(3-1)-1=4-1=3

我们可以用类比来说明这一点

1+1+1 is equivalent to 2*2*3
1+2 is equivalent to 2*(2*3)
2+1 is equivalent to (2*2)*3

Say number of prime factors = n
So we have number of factorizations = 2^(n-1)-1
守则:

#include <stdio.h>
int power(int x, int y)
{
    int prod =1, i ;
    for(i=1; i<=y;i++) prod *= x;
    return prod;
}

int main()
{
    int number,div;    
    int count  = 0, ti, t;
    printf("Input: ");    
    scanf("%d",&t);
    for(ti=1; ti<=t;ti++)
    { 
        scanf("%d", &number);
        div = 2;count = 0;
        while(number != 0)
        {
            if(number%div!=0) div = div + 1;            
            else 
            {
                number = number / div;
                //printf("%d ",div);
                count++;
                if(number==1) break;
            }
        }
        printf("%d ", power(2,count-1)-1);
    }
    return 0;
}
#包括
整数幂(整数x,整数y)
{
int-prod=1,i;

对于(i=1;i解决方案是要认识到,在所有排列中,只有一个排列是经过排序的。
2*4*7*3
给出了与
2*3*4*7
相同的结果。这意味着当你找到一个因子时,你不应该检查其余的因子是否有较低的因子。但是,你应该检查相同的因子是否再次出现:
12=2*2*3。序列
23
也已排序


顺便说一句,你应该给你的变量更清晰的名称,或者至少添加一些描述它们的注释。

解决方案是认识到,在所有排列中,只有一个排列是经过排序的。
2*4*7*3
给出了与
2*3*4*7
相同的结果。这意味着当你找到一个因子时,你不应该检查其余的因子较低的因子。但是,您应该检查是否再次出现相同的因子:
12=2*2*3
。序列
23
也已排序


顺便说一句,你应该给你的变量更清晰的名称,或者至少添加一些描述它们的注释。

解决方案是认识到,在所有排列中,只有一个排列是经过排序的。
2*4*7*3
给出了与
2*3*4*7
相同的结果。这意味着当你找到一个因子时,你不应该检查其余的因子较低的因子。但是,您应该检查是否再次出现相同的因子:
12=2*2*3
。序列
23
也已排序


顺便说一句,你应该给你的变量更清晰的名称,或者至少添加一些描述它们的注释。

解决方案是认识到,在所有排列中,只有一个排列是经过排序的。
2*4*7*3
给出了与
2*3*4*7
相同的结果。这意味着当你找到一个因子时,你不应该检查其余的因子较低的因子。但是,您应该检查是否再次出现相同的因子:
12=2*2*3
。序列
23
也已排序


顺便说一句,你应该给你的变量更清晰的名称,或者至少添加一些描述它们的注释。

你的问题标题是错误的,你要找的是唯一因子的数量,而不是因子的数量,因为12个因子的数量是6:1 2 3 4 6 12你的问题标题是错误的,你要找的是唯一因子的数量,而不是f的数量演员们,因为12个因子的数量是6:1 2 3 4 6 12你的问题标题错了,你在寻找唯一因子分解的数量,而不是n