从1开始逆时针旋转,可以得到一个边长为7的螺旋正方形。
37 36 3534 33 32 31
38 17 16 15 14 13 30
39 18 5 4 3 12 29
40 19 6 1 2 11 28
41 20 7 8 9 10 27
42 21 2223 24 25 26
43 44 45 46 47 48 49
有趣的是奇数的平方数都处于右下对角线上。更有趣的是,对角线上的13个数字中有8个质数,其百分比是8/13 62%。
如果在上面的螺旋正方形上再加一层,可以得到一个边长为9的螺旋正方形。如果这个过程继续,到螺旋正方形的边长为多少时,对角线上的质数百分比第一次降到10%以下?
public class Problem58
{
public static void main(String[] args)
{
long start = System.currentTimeMillis();
System.out.print("answer: ");
howmany();
long end = System.currentTimeMillis();
System.out.print("time: ");
System.out.println(end - start);
}
static void howmany()
{
int t = 1;
double up = 0;
int down = 0;
for (int i = 1; ; i++)
{
down ++;
t += (i + 1) / 2;
if ((i+3) % 4 != 0)
{
if (iszhishu(t))
{
up++;
}
}
else
{
if (up / down < 0.1 && t != 2)
{
System.out.println((int)Math.sqrt(t - 1));
break;
}
}
}
}
static boolean iszhishu(int n)
{
for (int i = 2; i <= Math.sqrt(n); i++)
{
if ( n % i == 0)
{
return false;
}
}
return true;
}
}
answer: 26241
time: 577