c言語にて、楕円の内部(周上を含む)の格子点の数を求めるということをやりたいのですが、ほぼコードは完成しているのですが一部うまくいかない点があるので質問しました。
下のような関数をつくり、その関数が動くかを下のA,Bを入力して確かめています。
A=4,B=4を入れて試すと格子点は49、中間のmの値は8になるはずなんですけど、このコードだと格子点53、mの値は9になってしまいます。
改善点があれば教えてほしいです。
C
#include<stdio.h>int main(){ int A,B; int Numberofpoints(int a,int b) { int i,j; int m=0,n; for (i=1;i<a;i++){//最初に第1象限のx軸y軸原点以外の格子点の数を求める for(j=1;j<b;j++){ if(((i*i)/(a*a)+(j*j)/(b*b)<=1)) { m++; } } } printf("%d\n",m);//mの値を確かめるためのprintf n=2*(a+b);//nはx軸y軸上の格子点 return 4*m+n+1;//原点をくわえて+1 } scanf("%d",&A); scanf("%d",&B); printf("%d\n",Numberofpoints(A,B));}
0 コメント