寻找给定整数的因数

12

我有一个类似这样的代码:

int f = 120;
for(int ff = 1; ff <= f; ff++){
    while (f % ff != 0){            
}

我的查找因子的循环有什么问题吗?我对于for和while语句的工作原理感到非常困惑,所以它们很可能是完全错误的。

在此之后,我该如何将变量分配给这些因子?


2
是的,有些问题-里面没有代码。你打算如何找到因子?你期望将它们存储在哪里? - duffymo
6
只是一点小建议:我不会使用“f”和“ff”,因为这样做并没有帮助可读性。 - Nanne
使用更好的变量名,您可能不想使用while循环来检查一个数字是否可以被f整除(这是一个单一条件检查,所以听起来像是if吗?)。至于保留因子,您了解Java集合吗? - wkl
2
http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes - Romain Hippeau
我建议您在调试器中逐步执行代码,这将清楚地显示每行代码正在做什么以及为什么要这样做。这将有助于您理解程序,并可能使您明显地了解需要修复的问题。 - Peter Lawrey
14个回答

0
    import java.util.Scanner;
    public class Factors 
    {
        Scanner scn=new Scanner(System.in);
        int num=scn.nextInt();
        public void findFactor()
        {
           System.out.println("Factors are");
           System.out.println("1");
           for(int i=2;i<=num;i++)
           {
                if(num%i==0)
                {
                    num=num/i;
                    System.out.println(i);
                    i=2;
                }
           }
        }
public static void main(String[] args) 
{
    while(1==1)
    {
        System.out.println("Enter a Number");
        Factors fct=new Factors();
        fct.findFactor();
    }
}

}


一个只有代码而格式不好的答案很可能会被踩。 - Ṃųỻịgǻňạcểơửṩ
需要在编程中翻译以下相关内容。请仅返回已翻译的文本:为了确保您的答案不会被踩,需要提供解释为什么您的解决方案更简洁或更准确的评论。 - Lachie White

0
稍微改进的解决方案:您可以首先检查变量x是否被变量y整除。如果是,我们将计数1并重复此过程。循环计数器使用x/y,并且应检查x>0以避免在x变为零但循环尚未完成时重复。
   public class Factor {

    public static void main(String[] args) {

        int x = 48;
        int x1 = x;
        int y = 2;
        int k = x / y;
        int j = 0;
        for (int i = 1; i < k; i++) {
            if ((x % y) == 0 && x > 0)
                j++;
            x = x / 2;
        }
        System.out.println(+x1 + " is a factor of " + y + " for " + j
                + " times.");

    }
}

-1
这段代码将给你提供因数。
ArrayList<Integer> arr = new ArrayList<>();
        int x=48;
        int y=1;
        while(x!=1)
        {
            if(x%y==0)
            {
                x=x/y;
                arr.add(y);
                if(y==1)
                {
                    y++;
                }
            }
            else
            {
                y+=1;
            }
        }
        System.out.println(arr);

-5

使用递归函数的最简单方法

public static int factorial(int n){
        if(n!=1)
            return n*factorial(n-1);
        return 1; 
}   

2
OP 要求因子,而不是阶乘。因此对此回答点踩。 - xploreraj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接