今天無意間看到一篇文,講經典C語言面試十個代碼。其中一個講如何判斷一個數字可被兩個素數相加得到,突然想到自己剛寫程式的時候寫過一個判斷一個數字能否被4個素數相加的代碼。特此翻出這篇古董代碼。因為最近都沒在看程式,隻能翻翻壓箱底的貨啦。慚愧慚愧,同學你周一還要考試啊!趕緊看書去吧。還那麼不自律!
#include <stdio.h>
int isprime(int);
int main (void)
{
int bum = 24; //當時連scanf都不會,是以用的是直接在程式裡面給出數字,這個bum就是可以任意修改的變量了。
int a1 = 2, a2 = 2, a3 = 2, a4 = 2;
for (a1 = 2; a1 <= bum -1 - a2 - a3 - a4; a1++ )
{
if (isprime(a1) == 0)
continue;
else
a1 = isprime(a1);
}
while ( a1 != isprime(a1))
{
a1--;
}
for (a2 = 2; a2 <= bum - 1-a1-a3-a4; a2++ )
{
if (isprime(a2) == 0)
continue;
else
a2 = isprime(a2);
}
while ( a2 != isprime(a2))
{
a2--;
}
for (a3 = 2; a2 <= bum -1 -a1-a2-a4; a3++ )
{
if (isprime(a3) == 0)
continue;
else
a3 = isprime(a3);
}
while ( a3 != isprime(a3))
{
a3--;
}
for (a4 = 2; a4 <= bum - 1 -a1-a2-a3; a4++ )
{
if (isprime(a4) == 0)
continue;
else
a4 = isprime(a4);
}
while ( a4 != isprime(a4))
{
a4--;
}
printf("%5d %5d %5d %5d", a1, a2, a3, a4);
return 0;
}
int isprime(int num)
{
int i;
int k = 1;
for (i = 2; i*i <= num; i++)
{
if ((num%i) != 0)
{
k = 1;
continue;
}
else
{
k=0;
break;
}
}
if (k == 0)
return 0;
if (k == 1)
return num;
}