当前位置: 首页 > 知识库问答 >
问题:

如何因数并确定它是否是质数

田博易
2023-03-14

所以我有一个问题,当我计算一个数字时,比如说15,我必须显示这个:15=3x5,但我得到的是3x5x5,我不知道如何使它变成这样,所以它只显示3x5。还有一个问题是,我输入的数字是否是素数。有办法解决这个问题吗?我只需要这些,然后再编辑其他东西。

public class PrimeFactor 
{
    public static void main(String[] args) 
    {
        Scanner input= new Scanner(System.in);
        int a;
        int d;
        int remainder=0;
        int count=2;
        int c=0;
        String s;
        System.out.println("Enter an integer to be factored:");
        a=input.nextInt();
        s="";
        d=a;
        while(a>1)
        {
            if(a>1)
            { 
                s="";
                while(a>1)
                {
                    remainder=a%count;
                    if (!(remainder>0))
                        while(remainder==0)
                        {
                            remainder=a%count;
                            if (remainder==0)
                            {    
                                a=a/count;
                                c=c+1;
                                s=s+count+"x";
                                if (a==1)
                                    s=s+count;
                            }
                            else
                                count++;
                        }
                    else 
                        count++;
                }
                if (a%count==0)
                {
                    System.out.println(d +"=" + s);
                    System.out.println(d+" is a prime number.");
                }
                else
                    System.out.println(d +"=" + s);
            }
        // TODO code application logic here
        }
    }
}    

共有3个答案

张献
2023-03-14

这样试试怎么样:-

for(int i = input-1; i > 0; i--) {
    if((input % i) == 0) {
            if(i == 1)
                System.out.println("Number is a prime");
            else
                System.out.println("Number is not a prime");
            break;
    }       
 }
鄢承运
2023-03-14

您没有完全正确地构造因式分解字符串:

  • 当您发现3除以a=15时,您将s设置为3x,并将a设置为商,因此a=5
  • 当您发现5除以a=5时,您将5x附加到s,因此现在s3x5x。然后您将a设置为商,即1。由于商现在是1,因此您再次追加5,因此现在您将得到3x5x5

a=1时,只需追加5,而不是5x5。你必须改变这一点:

s=s+count+"x";
if (a==1)
    s=s+count;

为此:

if (a==1) {
    s=s+count;
} else {
    s=s+count+"x";
}
太叔涵亮
2023-03-14

这是确定数字是否是素数的最快方法。另一种方法是使用for循环来确定数字的因子数,然后如果它有两个以上的因子,就说它是素数。

int num; // is the number being tested for if it's prime.
boolean isPrime = true;

for (int i = 2; i <= Math.sqrt(num); i++) // only have to test until the square root of the number
{
    if (num%i == 0) // if the number is divisible by anything from 2 - the square root of the number
    {
        isPrime = false; // it is not prime
        break; // break out of the loop because it's not prime and no more testing needed
    }
}

if (isPrime) 
{
    System.out.println(num + " is a prime number.");
}
else
{
    System.out.println(num + " is a composite number.");
}
 类似资料:
  • 问题内容: 好的,我的问题不是如何确定数字是否为质数,因为我想我已经知道了,但是更多的是如何使其正确显示。 这是我的代码: 现在我的问题是,如果数字最终等于9,它会说它是质数,而不是。我认为问题在于中断在一个循环后就停止了它,因此它不会递增变量p,因此仅测试除以2(我认为)。但是,如果我删除断点,它将在每次通过时打印出“和不是素数”,直到退出循环为止。不知道该怎么办。 问题答案: 查找数字是否为素

  • 所以我想找到关于欧拉计划的问题3的答案。我需要确定给定数的最大素数因子。 引述欧拉项目:“13195的素数因子是5、7、13和29。600851475143中最大的素数因子是什么?” 我已经构建了我的代码,它在任何int大小的东西上都能完美地工作。但是由于它们给出的巨大数字,我的代码存在转换问题。 起初,我尝试切换到长变量和长数组,但我得到了错误:“可能从long到int的有损转换” 那么,我如何

  • 问题内容: 我在RosettaCode上找到了以下Java代码示例: 我不是特别了解Java,但除了正则表达式本身以外,都了解此代码段的所有方面 当您在内置PHP函数中找到它时,我对Regex有了基本的了解。 素数如何匹配? 问题答案: 您说您了解这部分,但仅强调一下,生成的字符串的长度等于提供的数字。因此,当且仅当字符串包含三个字符。 正则表达式的第一部分说:“任何字符,零次或一次”。因此,基本

  • 问题内容: 我正在尝试编写一种方法,该方法将计算两个数字是否是赋值的相对质数。我主要是在寻找从哪里开始的答案。我知道有一种方法可以为我做很多事情,但是赋值几乎使我无需使用gcd或数组就可以做到。 我有点开始了,因为我知道我将不得不在for循环中使用运算符。 显然,此方法仅将返回,或者因为该函数仅将根据这两个数字是否相对质数来打印特定行。 我想我可能不得不写两个循环,无论是和,可能还有一些类型的语句

  • 汤姆教他的学生求一个数的阶乘。他想测试学生的理解力。为此,他提供了一个数字。他希望学生们告诉他这个数是哪个数的阶乘。 示例:如果Tom提供的数字为120,学生应该回答为5,因为5!=120。 通过编写一个程序来帮助学生做到这一点。请注意,输入应该是一个大于零的数字。如果输入小于或等于零,则输出应该是“无效输入”。此外,如果提供的输入不完全是一个数字的阶乘,例如,提供的输入是122,这不是一个数字的