这就是Euler项目的问题3。对于那些不知道的人,我必须找出最大的素因子600851475143。我有以下代码:
import java.lang.Math;
// 600851475143
public class LargestPrimeFactor {
public static void main(String[] stuff) {
long num = getLong("What number do you want to analyse? ");
long[] primes = primeGenerator(num);
long result = 0;
for(int i = 0; i < primes.length; i++) {
boolean modulo2 = num % primes[i] == 0;
if(modulo2) {
result = primes[i];
}
}
System.out.println(result);
}
public static long[] primeGenerator(long limit) {
int aindex = 0;
long[] ps = new long[primeCount(limit)];
for(long i = 2; i < limit + 1; i++) {
if(primeCheck(i)) {
ps[aindex] = i;
aindex++;
}
}
return ps;
}
public static boolean primeCheck(long num) {
boolean r = false;
if(num == 2 || num == 3) {
return true;
}
else if(num == 1) {
return false;
}
for(long i = 2; i < Math.sqrt(num); i++) {
boolean modulo = num % i == 0;
if(modulo) {
r = false;
break;
}
else if(Math.sqrt(num) < i + 1 && !modulo) {
r = true;
break;
}
}
return r;
}
public static int primeCount(long limit) {
int count = 0;
if(limit == 1 || limit == 2) {
return 0;
}
for(long i = 2; i <= limit; i++) {
if(primeCheck(i)) {
count++;
}
}
return count;
}
public static long getLong(String prompt) {
System.out.print(prompt + " ");
long mrlong = input.nextLong();
input.nextLine();
return mrlong;
}
}
但是,当我用比600851475143小(很多)的东西测试程序时,比如100000000,那么程序需要时间——事实上,100000000到目前为止已经花了20分钟,而且还在继续。很明显,我在这里的做法是错误的(是的,这个程序确实有效,我用较小的数字进行了尝试)。有人能提出一种不那么详尽的方法吗?
公共类LargestPrimeFactor{
public static boolean isPrime(long num){
int count = 0;
for(long i = 1; i<=num/2 ; i++){
if(num % i==0){
count++;
}
}
if(count==1){
return true;
}
return false;
}
public static String largestPrimeFactor(long num){
String factor = "none";
for(long i = 2; i<= num/2 ; i++){
if(num % i==0 && isPrime(i)){
factor = Long.toString(i);
}
}
return factor;
}
public static void main(String[] args) {
System.out.println(largestPrimeFactor(13195));
}
}
public static void main(String[] args) {
long number = 600851475143L;
long highestPrime = -1;
for (long i = 2; i <= number; ++i) {
if (number % i == 0) {
highestPrime = i;
number /= i;
--i;
}
}
System.out.println(highestPrime);
}
试试这个。。
public class LargestPrimeFactor{
public static int largestPrimeFactor(long number) {
int i;
for (i = 2; i <= number; i++) {
if (number % i == 0) {
number /= i;
i--;
}
}
return i;
}
/* change according to ur requirement.
public static long getLong(String prompt) {
System.out.print(prompt + " ");
long mrlong = input.nextLong();
input.nextLine();
return mrlong;
}
*/
public static void main(String[] args) {
//long num = getLong("What number do you want to analyse? ");
System.out.println(largestPrimeFactor(600851475143l));
}
}
我试图解决这个问题:https://www.hackerrank.com/contests/projecteuler/challenges/euler003/submissions/code/2977447 13195的质因数是5、7、13、29。 给定数N的最大素因子是什么? 输入格式第一行包含T,测试用例数。后面是T行,每行包含一个整数N。 每个测试用例的输出格式,显示N的最大素因子。 约束条
我在研究Euler项目的问题,这是问题五: 最大素因子问题3 13195的素因子为5、7、13和29。 600851475143的最大质因数是什么? 我得到了工作代码: 因数(19*19*19*19*19*19*19*19*19*1999989899) x=33170854034208712,最后一个系数=182128674 33170854034208712 有人知道为什么这没有得到正确的答案吗
问题内容: 我不确定我是否能够正确说出问题的意思,但是我想通过示例简单地了解要完成的工作。 但是没有给wqrapping div一个固定的宽度。因此,基本上,我希望包装器采用图像的宽度而不是过度扩展的文本。有什么办法吗? 还要注意,我不能使用绝对定位,因为从数据库传来的图像和文本每次都不同。 来自第一个链接的代码: 来自第二个链接的代码: 问题答案: 有一个“哈克”的方式,用另一个显示属性您的包装
我试图解决欧拉项目问题3,即: 13195的主要因子为5、7、13和29。数字600851475143中最大的素因子是什么? 这是我的解决方案,它适用于较小的值,但对于所需的数字却无法完成:
我试图找到素数的素数因子,然后将它们添加到一个数组中,该方法将返回该数组。我的方法甚至没有结果,程序只是继续运行。有人能找出哪里出了问题吗?谢谢。 checkIfPrime方法是我之前写的一个有效的方法。它只是检查一个数字是否为素数,返回一个布尔值。我把它放在那里是为了检查minusPrime何时被划分为一个质数,而质数将不再被划分,并将其作为最后一个因子添加到数组中。
本文向大家介绍Java程序,查找数字的唯一素数因子的乘积,包括了Java程序,查找数字的唯一素数因子的乘积的使用技巧和注意事项,需要的朋友参考一下 Java程序,查找数字的唯一素数因子的乘积,Java代码如下- 示例 输出结果 一个名为Demo的类包含一个名为素数因子的静态函数,该函数查找一个数字的素数因子,查找唯一的数字,并将这些素数因子的乘积存储在一个变量中。在main函数中,定义了数字的值,