第10問

The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17.

Find the sum of all the primes below two million.

#include <iostream>
#include <math.h>
using namespace std;



long long int prime[1000000];
long long int table[100000000];
int primeCall(){


	int flag=0;
	
	prime[0]=2;
	prime[1]=3;


	for(long long int i=0;i<3000000;i++)
	{
			if(i%2==0)table[i]=0;
			else table[i]=1;
	}

	
	for(long long int p=1;p<1000000;p++)
	{
		if(p%100==0)cout<<prime[p]<<endl;
		for(long long int i=prime[p];i<2001000;i+=2)
		{
			if(i%prime[p]!=0 && flag==0 && table[i]==1)
			{
				prime[p+1]=i;
				flag=1;

			}
			if(i%prime[p]==0)
			{
				table[i]=0;
			}
	
		}


		flag=0;

		if(prime[p+1]>2000000)break;

	}


8問目。

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>

using namespace std;
char str[]="7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450";

int main(){	
	int i=0;//1000桁目、100桁目、10桁目、1桁目をカウントする
	int num=1;
	int max=0;

	for(int p=0;str[p+4]!='\0';p++) {
		for(int m=10000; m>=1; m/=10,i++) 
			{
				cout<<(str[i+p]-'0');
				num*=(str[i+p]-'0');
			}
		cout<<endl;
		cout<<num<<endl;
		if(max < num) max=num; 
		i=0;
		num=1;
	}
	cout<<max<<endl;
}

7問目。

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;


long long  int primeCall(unsigned int NM){

	long long int prime[50000];
	long long int *box=new long long int[1000000];

	long long int p=0;

	for(p=0;p<NM;p++)prime[p]=0;
	prime[0]=2;
	box[0]=0;

	for(p=1;p<=NM;p++)
	{	
		for(long long int i=prime[p-1];i<1000000;i++)
		{
			if((i%prime[p-1])==0)box[i]=0;
			else if (box[i]!=0)box[i]=i;			
		}
		
		for(long long int i=2;i<1000000;i++)
		{
			if(box[i]!=0)
			{
				prime[p]=i;
				break;
			}
		}
	}

	delete [] box;

	return prime[NM-1];
}
int main()
{
	cout<<primeCall(10001)<<endl;
}

6問目。

The sum of the squares of the first ten natural numbers is,

1^2 + 2^2 + ... + 10^2 = 385
The square of the sum of the first ten natural numbers is,

(1 + 2 + ... + 10)^2 = 552 = 3025
Hence the difference between the sum of the squares of the first ten natural numbers and the square of the sum is 3025 385 = 2640.

Find the difference between the sum of the squares of the first one hundred natural numbers and the square of the sum.

#include <iostream>

using namespace std;

int main()
{
	
	unsigned long long int sum=0;
	unsigned long long int sq=0;
	for(int i=1;i<=100;i++)
	{
		sum+=(i*i);

		sq+=i;
	}
	cout<<(sq*sq)-sum<<endl;
}

5問目。

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 number that is evenly divisible by all of the numbers from 1 to 20?

#include <iostream>

using namespace std;

int main()
{
	
	for(int i=2520;i<=1000000000;i++)
	{
		
		if( (i%11)==0 && (i%12)==0 && (i%13)==0 && (i%14)==0 && (i%15)==0 && (i%16)==0 && (i%17)==0 && (i%18)==0 && (i%19)==0 &&(i%20)==0 )cout<<i<<endl;

	}
}

4問目。

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.


#include <iostream>

using namespace std;

int main()
{
	int max=0;
	for(int i=100;i<=999;i++)
	{
		
		for(int n=100;n<=999;n++)
		{
			max=(i*1000)+(i/100)+((i/10%10)*10)+((i%10)*100);

				if((max % n)==0 && (max/ n) > 100 && (max/ n) < 1000)
				{
					cout<<n<<endl;
					cout<<max/n<<endl;
					cout<<max<<endl;
					break;
				}	
		}
	}

第2問

#include <iostream>
#include <time.h>

using namespace std;

int main()
{
	unsigned long long int l=0;
	unsigned long long int r=1;
	unsigned long long int m=0;

	unsigned long int ans =0;
	
	for(long long int i=0;i<=4000000;i++){

		if(m>4000000)break;
		m=l+r;
		//cout<<m<<endl;
		if(m%2==0)ans=ans+m;
		l=r;
		r=m;

		
	}
	 cout<<ans<<endl;

}