5
從項目歐拉,problem 45:項目歐拉數45
三角,五邊形,和六邊形數由下列公式生成:
三角T_(N)= N(N + 1)/ 2 1,3,6,10,15,...
五角P_(N)= N(3N-1)/ 2 1,5,12,22,35,...
六角H_(n)= n(2n-1)1,6,15,28,45,...
可以驗證T_(285)= P_(165)= H_(143)= 40755.
找到下一個也是五角形和六角形的三角形數字。
下面是問題。 這非常簡單直接,但事情是,我的程序運行時會出現小故障,此時三角形數字的值超出了int數據類型中的最大值。我試圖尋找其他數據類型的網絡,但沒有成功。
代碼
#include<stdio.h>
int main(void)
{
int i,j,t,h,p,k;
int n=10000;
for(i=0;i<n;i++)
{
t=(i*(i+1))/2;
for(j=0;j<n;j++)
{
h=j*(2*j-1);
if(h>t)
break;
if(h==t)
{
//printf("%d %d\n",h,t);
for(k=0;k<n;k++)
{
p=(k*(3*k-1))/2;
if(p>h)
break;
if(p==h)
{
printf("%d %d\n",p,i);
break;
}
}
}
}
}
printf("done\n");
return(0);
}
你能告訴我它的佔位符嗎? –
unsigned long long variablename; – johnathon
只需用'unsigned long long'替換我們程序中的每個'int',並將格式說明符從'%d'更改爲'%llu'。 –