Packing Rectangles先cheat了,下星期再回來做。
先用篩法做了一張hash表,記錄是否為素數,然后找各個素數判斷是否為回文數,超內存了。。。
于是改為生成回文數后判斷是否為素數,過了。
貌似現在寫這種程序的速度比高中快不少了,到底是什么進步了呢?

/**//*
PROG: pprime
ID: 060301031
LANG: C++
*/

#include <iostream>
#include <fstream>
#include <bitset>
#include <cmath>

using namespace std;


bool isPrime(const long num)
{
int i;

for (i = 2; i <= sqrt(num); i++)
{

if (num % i == 0)
{
return false;
}
}
return true;
}


int main()
{
ifstream fin("pprime.in");
ofstream fout("pprime.out");
long from, to;
long i = 0, j;
fin >> from >> to;
long beginNum = 1;

while (true)
{
int number;
i++; // i indicates the digits of palindromes to be generated

for (j = beginNum; j < beginNum * 10; j++)
{
long num1 = j, num2 = 0, temp = j;

if (i % 2 == 1)
{
temp /= 10;
}

while (temp > 0)
{
num1 *= 10;
num2 = num2 * 10 + (temp % 10);
temp /= 10;
}
number = num1 + num2;

if (number > to)
{
break;
}

if (number < from)
{
continue;
}

if (isPrime(number))
{
fout << number << endl;
}
}

if (number > to)
{
break;
}

if (i % 2 == 0)
{
beginNum *= 10;
}
}
return 0;
}
先用篩法做了一張hash表,記錄是否為素數,然后找各個素數判斷是否為回文數,超內存了。。。
于是改為生成回文數后判斷是否為素數,過了。
貌似現在寫這種程序的速度比高中快不少了,到底是什么進步了呢?


























































































