الگوریتم مقسوم علیه های اول یک عدد
int numberj = 10; for (int i = 3; i < numberj; i++) { if (numberj % i == 0) { Log.w("LOG", "magh som haye adad = " + "khodeadad va 2 va : " + i); if (i % 2 == 0) { Log.w("LOG", "avalnist" + i); } } }
این الگوریتم درست کار میکنه اگر میکنه نظرتون چیه واگر نمیکنه مشکلش چیه ممنون




سلام،اول ببينيد منطق الگوريتمتون رو درست فهميدم يا نه؟ ، شما تو اين الگوريتم اين قضيه رو مطرح كرديم كه مقسوم عليه هاي اعداد اول بر دو بخش پذير نيستند بجز عدد دو در مورد بقيه ي اعداد صدق ميكنه و اگه عددي مقسوم عليه اش بر دو بخش پذير بود عدد اول نيست ، واسه همينم تو ي حلقه ي for كوچكتر رو فقط گذاشتين در حاليكه در تعريف اعداد اول داريم كه عدد اول عدديست كه بر يك و خودش برعدد ديگه اي بخش پذير نيست، ولي چالش كار اينجاست كه مشخص كردن متغييري براي مشخص كردن اينكه عدد اول هست يا نه يه مقداري سخته من كد شما رو يه ذره تغيير دادم اما براي دو جوابگو نيست پس الگوريتمم كامل و درست نيست ، ولي بازم روش كار ميكنم ببينم به كجا ميرسم.
int number = 17;
int counter = 0;
for (int i = 1; i <= number; i++) {
if (number % i == 0) {
if (i % 2 == 0) {
Log.i("LOG", "avalnist " + i);
}
counter++;
}
}
if (counter == 1) {
Log.i("LOG", number + " is Aval");
}

دوستای گلم ازین استفاده کنین حله
int number = 15;
for (int i = 1; i <= number; i++) {
if (number % i == 0) {
int value = 0;
for (int index = 1; index <= i; index++) {
if (i % index == 0)
value++;
}
if (value == 2)
{
Log.i("LOG", "" + i);
}
}
}

اینم متود الگوریتم من. چون برای اعداد بسیار بزرگ یکم طول میکشه بنابراین خط بعدش یه متن گذاشتم تا مطمئن شم محاسبه تمام شده!هر عددی میخواین امتحان کنین
public void num(int n) {
for (int i = 1; i <= n; i++) {
int x = n % i;
if (x == 0) {
if (i % 2 != 0) {
if (i % 3 != 0) {
if (i % 4 != 0) {
if (i % 5 != 0) {
if (i % 6 != 0) {
if (i % 7 != 0) {
if (i % 8 != 0) {
if (i % 9 != 0) {
Log.i("LOG", "" + i);
if (i == 2) {
if (i == 3) {
if (i == 5) {
if (i == 7) {
Log.i("LOG", "" + i);
}
}
}
}
}
}
}
}
}
}
}
}
}
}
Log.i("LOG", "پایان محاسبه");

این کد کوتاه تره و کار میکنه
int mynumber = 1000; int count = 0; for (int i = 1; i <= mynumber; i++) { if (mynumber % i == 0) { for (int j = 1; j <= i; j++) { if (i % j == 0) { count++; } } if (count <= 2) { Log.i("LOG", "Number is: " + i); } count = 0; } }
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .