این اولین کدیه که خودم زدم و از اینترنت هیچ قسمتیش رو نگاه نکردم.
اگر مفهوم اعداد مثلثی و مربعی رو نمیدونید میتونید تو اینترنت راجبش سرچ کنید.
این تصویر تا حدودی مفهوم رو میرسونه.
این کد ابتدا با الگو . . . + ۴ + ۳ + ۲ + ۱ اعداد مثلثی زیر ۱۰ میلیون رو پیدا می کنه بعد با الگو 2^1, 2^2, 2^3, 2^4, 2^n+1 اعداد مربع رو بدست میاره بعد اعداد مربع و مرکب رو درون یک آرایه قرار میده و بعد اعداد این دو آرایه رو برای بدست آوردن اعداد مشترک روی یک مکانیسم دو حلقه ای بررسی می کنه و در نهایت ۳ عدد رو که هم مربعین هم مثلثی رو شناسایی میکنه.
اون ۳ عدد ۳۶، ۱۲۲۵ و ۴۱۶۱۶ هستند.
این کد حل یک مسعله مربوط به نظریه اعداده.
این کد رو میتونید روی کامپایلر آنلاین W3school تست کنید.
چیزی که من از این تجربه فهمیدم این بود که خودت فکر کنی کد رو بزنی راحت تر از سرچ کردن و اسفاده و درک کردن کد دیگرانه.
public class Main {
public static void main(String[] args) {
// Both Trangular & Square Numbers Finding Under 10 Million By : Amirhossein Haghy
// Email : Amirhosseinhaghy9@gmail.com
// Insta : bigtitan_amir
// Trangular Numbers Variables
int a = 1;
int b = 1;
int c = 1;
int[] myArray = new int[10000100];
int ar = -1;
// Square Numbers Variables
int d = 1;
int e = 2;
double f = 1;
double[] yourArray = new double[10000100];
int yr = -1;
// Both Trangular & Square Numbers
int mrdavid = -1;
int mrali = -1;
// Trangular Numbers Finder Loop
System.out.println("Trangular Numbers");
System.out.println("");
while (c <= 10000000) {
b++;
ar++;
c = a + b;
myArray[ar] = c;
a = c;
System.out.println(myArray[ar]);
}
System.out.println("///////////////////////////////////////////////////////////////////////////////////");
// Square Numbers Finder Loop
System.out.println("Square Numbers");
System.out.println("");
while (f <= 10000000) {
d++;
yr++;
f = Math.pow(d, e);
yourArray[yr] = f;
System.out.println(yourArray[yr]);
}
System.out.println("///////////////////////////////////////////////////////////////////////////////////");
// Both Trangular & Square Numbers Finder Loop
System.out.println("Both Trangular & Square Numbers");
System.out.println("");
while (mrdavid <= 1000) {
mrdavid++;
while (mrali <= 1000) {
mrali++;
if (myArray[mrdavid] == yourArray[mrali]) {
System.out.println(myArray[mrdavid]);
}
}
mrali = -1;
} System.out.println("///////////////////////////////////////////////////////////////////////////////////");
}
}