java - Prime factorization in a program for class -
import java.util.scanner; public class javaapplication1 { public static void main(string[] args) { scanner kboard = new scanner(system.in); int n = 0; int = 1; system.out.println("enter positive number"); n = kboard.nextint(); system.out.print("the prime factors of " + n + " : "); value = 2; while (n > 1) { = 1; if (n % != 0){ = 1; i=i+1; if(n % == 0){ system.out.println(" "+ i); } } else { system.out.print("1 , " + n); break; } } } } this program , started coding month or ago, program giving 1 , number output rather prime factors.
the program gives 1 output because of this:
i = 1; if (n % != 0) { // ... } else { system.out.print("1 , " + n); break; }
since i = 1, n % != 0 false, because n module 1 0. else block gets executed , break out of while loop.
even if fix this, there many other issues in program:
- the condition
n > 1non-sense,nnever changes in loop, conditiontrue. - checking
% 1pointless, every number divided 1. should start checking 2.
with minor improvements, loop can improved find factors:
list<integer> factors = new arraylist<>(); (int = 2; <= math.sqrt(n); i++) { if (n % == 0) { factors.add(i); } } but not enough. find factors, not prime factors. example, number 40, find 2, 4, 5, 8, 10, of 2 , 5 primes. 1 simple solution add method called isprime checks if number prime.
Comments
Post a Comment