/*
* bhatt.umang7@gmil.com
*/
/*
* A Pythagorean triplet is a set of three natural numbers, a b c, for which,
*
* a2 + b2 = c2
* For example, 32 + 42 = 9 + 16 = 25 = 52.
*
* There exists exactly one Pythagorean triplet for which a + b + c = 1000.
* Find the product abc.
*/
#include<iostream>
#include<math.h>
using namespace std;
bool isPerfectSquare(int no )
{
bool ans = true ;
for(int i = 2 ; i < no ; i++)
{
if ( no % i == 0 )
{
ans = false;
break;
}
}
return ans;
}
int main()
{
int ans ;
for (int i = 1 ; i <= 1000 ; i++ )
{
for (int j = 1 ; j <= 1000 ; j++ )
{
for (int k = 1 ; k <= 1000 ; k++ )
{
if (((i*i) + (j*j)) == (k*k) )
{
if( i < j < k)
{
if(i+j+k==1000)
{
ans = i * j * k ;
goto show_ans;
}
}
}
}
}
}
show_ans:
cout << ans << "\n";
}
Thursday, January 19, 2012
Pythagoras
Find the greatest product of five consecutive digits in the 1000-digit number.
/*
* bhatt.umang7@gmil.com
*/
/*
* Find the greatest product of five consecutive digits in the 1000-digit number.
73167176531330624919225119674426574742355349194934
96983520312774506326239578318016984801869478851843
85861560789112949495459501737958331952853208805511
12540698747158523863050715693290963295227443043557
66896648950445244523161731856403098711121722383113
62229893423380308135336276614282806444486645238749
30358907296290491560440772390713810515859307960866
70172427121883998797908792274921901699720888093776
65727333001053367881220235421809751254540594752243
52584907711670556013604839586446706324415722155397
53697817977846174064955149290862569321978468622482
83972241375657056057490261407972968652414535100474
82166370484403199890008895243450658541227588666881
16427171479924442928230863465674813919123162824586
17866458359124566529476545682848912883142607690042
24219022671055626321111109370544217506941658960408
07198403850962455444362981230987879927244284909188
84580156166097919133875499200524063689912560717606
05886116467109405077541002256983155200055935729725
71636269561882670428252483600823257530420752963450
*/
#include<iostream>
#include<stdlib.h>
using namespace std;
long getDigit(string s,int pos)
{
char arr[1];
arr[0] = s.at(pos);
long l = atol(arr);
return l ;
}
int main()
{
string s = "7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450";
long ans = -1 ;
for(int i = 0 ; i < 1000-4 ; i++ )
{
long mul = getDigit(s , i ) * getDigit(s , i+1 ) * getDigit(s , i+2 ) * getDigit(s , i+3 ) * getDigit(s , i+4 ) ;
if (mul > ans )
{
ans = mul;
}
}
cout << ans << "\n";
}
10001st prime number
/* * bhatt.umang7@gmil.com */ /* * By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13. * * What is the 10001st prime number? */ #include<iostream> using namespace std; bool isPrime(long no) { bool bval = true; for(long i = 2 ; i < no ; i++) { if ( no % i == 0 ) { bval = false; break; } } return bval; } int main() { long count = 0 ; long no = 2 ; while (true) { if (isPrime(no)==true) { count++; if (count == 10001) { break; } } no++; } cout << no << "\n"; }
number program
/*
* bhatt.umang7@gmil.com
*/
/*
* 2520 is the smallest number that can be divided
* by each of the numbers from 1 to 10 without any remainder.
* What is the smallest positive number that is evenly
* divisible by all of the numbers from 1 to 20?
*/
#include<iostream>
using namespace std;
int main()
{
long n1 = 100;
int ans1 = 0;
int ans2 = 0 ;
int ans = 0 ;
for(int i = 1 ; i <= n1 ; i++)
{
ans1 += i;
}
ans1 = ans1 * ans1;
for(int i = 1 ; i <= n1 ; i++)
{
ans2 += (i*i);
}
ans = ans1 + ans2;
cout<< "Ans is " << ans1-ans2 ;
return 0;
}
smallest no divisble by numbers between 1 and 20
/* * bhatt.umang7@gmil.com */ /* * 2520 is the smallest number that can be divided * by each of the numbers from 1 to 10 without any remainder. * What is the smallest positive number that is evenly * divisible by all of the numbers from 1 to 20? */ #include<iostream> using namespace std; int main() { long n1 = 20; long ans =1 ; bool b = true ; int i = 0; while ( true ) { b = true; for ( i = 1 ; i <= n1 ; i++ ) { if (ans%i==0) { } else { b = false; break; } } if (b == true) { break; } ans++; } cout<< "Ans is " << ans ; return 0; }
largest palindrome made by mul of three digits
/*
* bhatt.umang7@gmail.com
*/
/*
* A palindromic number reads the same both ways. The largest palindrome
* made from the product of two 2-digit numbers is 9009 = 91 99.
*
* Find the largest palindrome made from the product of two 3-digit numbers.
*/
public class Problem4
{
static long reverse(long no)
{
long reverse = 0 ;
while (no > 0 )
{
reverse *=10;
reverse += no% 10;
no/=10;
}
return reverse;
}
public static boolean isPalindrome(long no)
{
long reverse = reverse(no);
boolean returnVal = false ;
if (reverse == no )
{
returnVal = true;
}
return returnVal;
}
public static void main(String args[])
{
int n1 = 1000;
int n2 = 1000;
long ans =0 ;
for (int i = 0 ; i < n1 ; i++ )
{
for (int j = 0 ; j < n1 ; j++ )
{
long temp = i * j ;
if (isPalindrome(temp))
{
if (ans < temp)
{
ans = temp ;
}
}
}
}
System.out.println("Ans is "+ ans );
}
}
largest prime factor of the number 600851475143
/*
* bhatt.umang7@gmail.com
*/
/*
* The prime factors of 13195 are 5, 7, 13 and 29.
* What is the largest prime factor of the number 600851475143 ?
*/
import java.util.ArrayList;
import java.util.List;
public class Problem3
{
/**
* This method will return the ArrayList containing the
* prime-factors of the number passed to the method.
* @param number is the number for which you want to find the prime factors
* @return will return a list which is having prime factors of the number
* passed to the method
*/
public static List<Long> primeFactors(long number)
{
long n = number; // n is the number passed.
List<Long> factors = new ArrayList<>();
// the list which will hold the prime factors of the number passed.
/*
* go up to n \ i increment i
*/
for (long i = 2; i <= n / i; i++)
{
// if the reminder is zero then it is a valid prime factor
while (n % i == 0)
{
// add the currunt number to the list of prime factors
factors.add(i);
n /= i; // n = n / i
// we are changing the nummber itself for
//which we are finding the prime factors
}
}
if (n > 1)
{
factors.add(n);
}
return factors; // return the list to the caller
}
public static void main(String args[])
{
long n = 600851475143L;
// get the list of prime factors by calling the method
List<Long> li = primeFactors(n);
// store the last item of list in the ans variable
long ans = li.get(li.size() - 1);
System.out.println("Ans is " + ans);
// print the answer on the console
}
}
sum of even Fibonacci numbers less than 4 million
/*
* bhatt.umang7@gmail.com
*/
/*
* Each new term in the Fibonacci sequence is generated by adding the previous
* two terms. By starting with 1 and 2, the first 10 terms will be:
*
* 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
*
* By considering the terms in the Fibonacci sequence whose values do not exceed four
* million, find the sum of the even-valued terms.
*/
public class Problem2
{
public static void main(String args[])
{
long ans = 0 ;
long sum = 0 ;
long max = 4000000;
long prev_prev = 0 ;
long prev = 1 ;
while (sum< max)
{
sum = prev_prev + prev ;
prev_prev = prev ;
prev = sum ;
if (sum%2 == 0)
{
ans += sum ;
}
}
System.out.println("Ans is "+ ans );
// ans is
}
}
sum of no who are multiple of 5 or 3
/*
* bhatt.umang7@gmail.com
*/
/*
* If we list all the natural numbers below 10 that are multiples of 3 or 5,
* we get 3, 5, 6 and 9. The sum of these multiples is 23.
* Find the sum of all the multiples of 3 or 5 below 1000.
*/
public class Problem1
{
public static void main(String args[])
{
int n = 1000 ;
int sum = 0 ;
for (int i = 1 ; i < n ;i++)
{
if ((i%3 == 0 ) || (i%5==0) )
{
sum+=i;
}
}
System.out.println("Sum is "+ sum );
// ans is 233168
}
}
Subscribe to:
Comments (Atom)