i have create program goes 1 100 , calculates separate product of numbers have division 4 rest 0, 1, 2, 3, have calculate 4 different products.
i tried solving problem in 2 ways both ways display wrong results:
first attempt:
public class prodmod4 { public static void main(string[] args){ int i, k=0; long p=1; while(k<4){ for(i=1;i<=100;i++){ if(i%4==k){ p=p*i; } } system.out.printf("produsul numerelor care au restul %d este: %d\n", k, p); i=1; p=1; k++; } } } when run program gives me:
the product of numbers rest 0 0, rest 1 -6661643765781265135, rest 2 -2885954222765899776, rest 3 -9150527387120197261
second attempt:
public class prodmod4v2 { public static void main(string[] args){ int i; long zero=1, unu=1, doi=1, trei=1; for(i=1;i<=100;i++){ switch(i%4){ case 0: zero=zero*i; break; case 1: unu=unu*i; break; case 2: doi=doi*i; break; case 3: trei=trei*i; break; default: break; } } system.out.printf("produsul numerelor care au resturile 0,1,2,3 sunt:\n zero:%d\n unu:%d\n doi:%d\n trei:%d\n", zero, unu, doi, trei); } } when run have same output in first attempt.
thank in advance!
your numbers big mere long, supports numbers 2^63 - 1. when happens, result said overflow - means results not you'd expect them be. solve this, must use supports larger numbers, biginteger or bigdecimal.
Comments
Post a Comment