PDA

View Full Version : سوال: مشکل در <<تعداد اعداد اول قبل از عدد وارد شده>>



payam.r
دوشنبه 08 آذر 1395, 16:38 عصر
لطفا بگویید ایراد برنامه زیر چیست

شرح برنامه: عددی را از کاربر دریافت کرده وتعداد اعداد اول کوچکتر مساوی با آن را نمایش دهد




#include <iostream>
using namespace std;

int main() {
int x=1 , p=0 , n ,j=0;
cin>>n;
while (n>0)
{
while(x<=n)
{
if (n%x==0){

p=p+1;
x++;
}else{
x++;
}


}
if(p==2){
j++;
n--;
}else{
n--;
}


}
cout<<j;

return 0;
}

BeginnerProgrammer
دوشنبه 08 آذر 1395, 20:46 عصر
کدتون که خیلی مبهمه. بیشتر توضیح بدین، مثلا چرا دارین باقیمانده n به x رو چک می کنید؟

AliAskari1375
دوشنبه 08 آذر 1395, 22:43 عصر
سلام. این درست کار میکنه:


#include <iostream>

using namespace std;

int main() {

int n, x = 0;
cin >> n;

for(int i = 2; i <= n; i++)
{
bool b = true;

for(int j = 2; j <= i / 2; j++)
{
if(i % j == 0)
{
b = false;
break;
}
}

if(b)
x++;
}

cout << x << endl;

return 0;
}

a.r.khoshghalb
سه شنبه 09 آذر 1395, 13:07 عصر
لطفا بگویید ایراد برنامه زیر چیست

شرح برنامه: عددی را از کاربر دریافت کرده وتعداد اعداد اول کوچکتر مساوی با آن را نمایش دهد




#include <iostream>
using namespace std;

int main() {
int x=1 , p=0 , n ,j=0;
cin>>n;
while (n>0)
{
while(x<=n)
{
if (n%x==0){

p=p+1;
x++;
}else{
x++;
}


}
if(p==2){
j++;
n--;
}else{
n--;
}


}
cout<<j;

return 0;
}





بعد از خطی که توش while گذاشتین برای n>0 باید دوباره مقدار x رو مساوی 1 کنین
وگرنه از آخرین مقدار x ای که از حلقه پیش مونده ادامه میده و احتمالا برنامه تون n یا n-1 چاپ میکنه جواب رو...