代码1:

package chp3;
import java.util.Scanner;
public class TestAllFactor{
    public static void main(String[] args){
        System.out.print("请输入一个整数n:");
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        for(int i=1;i<=n;i++){
            if(n%i==0)    //上一行的i只有能被n整除 才是n的因子
                System.out.println(i+" ");
        }
    }
}

或者写一个求因子的普遍函数:

package chp3;
import java.util.Scanner;
public class TestAllFactor{
    public static void main(String[] args){
        System.out.print("请输入一个整数n:");
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        getFactor(n);
       
    }
    public static void getFactor(int m){
        for(i=1;i<=m;i++){    //如果i<=m/2,则输出的因子不包括那个数本身
            if(m%i==0)  
            System.out.println(i+" ");
        }
    }
}


问题1:为什么i<=m变成i<=m/2,输出的因子就不包括那个数本身了呢

问题2:如果负数也有因子,代码改如何完善