带计数器的独特因式分解

Posted

技术标签:

【中文标题】带计数器的独特因式分解【英文标题】:Unique factorization with counter 【发布时间】:2018-10-30 08:13:22 【问题描述】:

我正在尝试在 JAVA 中构建一个使用唯一分解定理的程序。 我的意思是,从用户那里得到一个大于 1 的数字,然后用计数器打印所有唯一的因式分解。

例如,对于 100,输出应该是

2 2

5 2

因为 100=2*2*5*5

对于 23,输出应该是

23

如果输入为6,则输出为

2
3

最后一个例子,对于 8112,输出应该是

2 4
3
13 2

到目前为止,我实现了一个代码,它给出了第一列并纠正了素数。但是当计数器 >1 打印第二列时,我没有成功计数。

我的代码如下:

int n = scanner.nextInt();
    int num = 2;
    while (num <= n) 
        int i = 2;
        boolean isPrime = true;
        while (i < num && isPrime) 
            if (num % i == 0) 
                isPrime = false;
            
            i++;
        
        if (isPrime) 
            int counter = 1;
            if (n % num == 0) 
                System.out.println(num);
            
        
        num++;
    

任何想法我错过了什么?

【问题讨论】:

int ounter = 1 的目的是什么?它从不在定义的范围内使用。 n 除以i(重复),而i 是一个因素。而且您只需要检查到i*i &lt;= n @BluesSolo 这可能是尚未完全实施的计数器(那里的错字)。 @BluesSolo 应该是一个“计数器”。当n mod(素数)除以多个相同素数时,此变量需要计算所有时间。 【参考方案1】:

您的counter 尚未实施。

int n = scanner.nextInt();
int num = 2;
while (num <= n) 
    int i = 2;
    boolean isPrime = true;
    while (i < num && isPrime) 
        if (num % i == 0) 
            isPrime = false;
        
        i++;
    
    if (isPrime) 
        int counter = 0;
        while (n >= num && n % num == 0) 
            counter++;
            n /= num;
        
        if (counter == 1) 
            System.out.println(num);
        
        else if (counter > 1) 
            System.out.println(num + " " + counter);
        
    
    num++;

【讨论】:

【参考方案2】:

找到号码后,你必须继续找到那个计数器。以下是我的解决方案。

            int ounter = 0;
            if (n % num == 0) 
                System.out.print(num);
                int n1 = n;
                while(n1%num == 0) 
                    ounter ++;
                    n1 = n1/num;
                
                if(ounter != 1) 
                    System.out.println(" "+ounter);
                
            

【讨论】:

以上是关于带计数器的独特因式分解的主要内容,如果未能解决你的问题,请参考以下文章

实例带你掌握如何分解条件表达式

通俗易懂带你看懂时间序列分解模型?高深也不过如此

软件架构分解LinkedIn日志系统GWT HTML5支持——架构周报

手把手带你分解 Vue 倒计时组件

小开带你学C++ | Lesson 11 函数初步和分解质因数问题

车辆计数基于matlab形态学停车场车辆计数含Matlab源码 628期