مشکل: اعداد اول کوچکتر از عدد ورودی

mhabat

Member
با سلام من می خوام یه برنامه بنویسم که اعداد لول کوچکتر از عدد ورودی را نمایش بده.این سورس رو نوشتم می خوام بدونم کجاش اشتباه هکه درستش کنم:
HTML:
#include<iostream.h>
#include<conio.h>
void main()  { 
clrscr();
int a;int c=0;int d;
cin>>a;
for(int i=a;i>0;i--){
for(int b=1;b<=i;i++){
d=i%b;
if(d==0)
c+=1;
b++;}
if(c==2)
cout<<i; }
getch(); return 0; }
خیلی ممنون
بــــدرود
 

the_king

مدیرکل انجمن
با سلام من می خوام یه برنامه بنویسم که اعداد لول کوچکتر از عدد ورودی را نمایش بده.این سورس رو نوشتم می خوام بدونم کجاش اشتباه هکه درستش کنم:
HTML:
#include<iostream.h>
#include<conio.h>
void main()  { 
clrscr();
int a;int c=0;int d;
cin>>a;
for(int i=a;i>0;i--){
for(int b=1;b<=i;i++){
d=i%b;
if(d==0)
c+=1;
b++;}
if(c==2)
cout<<i; }
getch(); return 0; }
خیلی ممنون
بــــدرود

1) تابعی main ای که با return 0 تموم میشه رو با () int main تعریف کنید، نه ()void main
کد:
void main()  {
2) شما تعداد مواردی که i بر b بخشپذیر است را در c می شمارید، اما صفر کردن c را فقط یکبار و قبل شروع حلقه ها
انجام داده اید، در نتیجه برای i های بعدی دیگر c با 0 شروع نمی شود و مقدار c همینطور تجمعی افزایش می یابد.
باید c = 0 را داخل حلقه i و پیش از شروع حلقه b قرار دهید :
کد:
int a;int c=0;int d;

3) حلقه b ارتباطی با افزایش مقدار i ندارد، بجای اون ++i می بایستی ++b را قرار می دادید :
کد:
for(int b=1;b<=i;i++){
و این را هم از انتهای حلقه بردارید :
کد:
b++;}

4) وقتی اعداد نمایش داده می شوند چون چیزی بین شان چاپ نمی کنید می چسبند به هم، یک عبارتی مثل " " > را
هم اضافه کنید تا اعداد i متوالی با هم فاصله داشته باشند.
کد:
cout<<i; }

کد ویرایش شده :
کد:
#include <iostream.h>
#include <conio.h>

int main()
{
    clrscr();
    int a, c, d;
    cin >> a;
    for (int i = a; i > 0; i--)
    {
        c = 0;
        for (int b = 1; b <= i; b++)
        {
            d = i % b;
            if (d == 0)
                c += 1;
        }
        if (c == 2)
            cout << i << " ";
    }
    getch();
    return 0;
}
 

جدیدترین ارسال ها

بالا