注册 登录
编程论坛 C++教室

求助,一个程序只完成了一半,另一半不知怎样做。

keqiang 发布于 2008-06-21 22:15, 1071 次点击
这个程序代码如下:
#include <iostream.h>
int main()
{
int a,b,c,i;
for(i=1;i<10;i++)
{
cout<<"请输入一个数,将判断是否位素数,不是素数,将求出其因子,请输入:"<<endl;
cin>>a;
if(a<=2 && a>0)
cout<<"这不是素数。"<<endl;
else
cout<<a<<"的因子有:";
for(b=2;b<=a/2;b++)
{
if(a%b==0)
cout<<b<<",";
}
cout<<"所以a不是素数。"<<endl;
}
}

需要帮助的地方:如果不是素数,可以求出其因子,但如果是素数就不知怎么把它显示出来了。
10 回复
#2
柳丝飘絮2008-06-21 23:24
2也是素数
#3
keqiang2008-06-21 23:30
2是素数,这修该过来容易,一楼会输出素数吗?在线等答案
#4
keqiang2008-06-22 00:18
#5
江湖贫侠2008-06-22 09:55
帮你稍微改了一下
#include <iostream.h>
#include <math.h>
int main()
{
    int a,b,c=0,i,d;
    for(i=1;i<10;i++)
    {
        cout<<"请输入一个数,将判断是否位素数,不是素数,将求出其因子,请输入:"<<endl;
        cin>>a;
        if(a<2 && a>0)    cout<<"这不是素数。"<<endl;
        if (a>=2)
        {
            cout<<a<<"的非1因子:";
            for (d=2;d<=(int)sqrt(a);d++)
            {    
                if (a%d==0) {cout<<d<<","<<a/d<<endl;;c++;}
            }
            if (c==0) cout<<"不存在\n"<<a<<"是素数"<<endl;    
        }
    }
    return 0;
}
#6
江湖贫侠2008-06-22 09:56
if (a%d==0) {cout<<d<<","<<a/d<<endl;;c++;}
这行不小心多打了个;号
#7
keqiang2008-06-22 12:38
程序运行还有点问题
谢谢五楼。但我在程序运行时还发现这个程序还存在一些问题。
问题是当程序第一次要求输入数字时输入了一个非素数,然后回车。第二次要求输入数字时输入素数时,又不能显示这个数是素数了。
#8
keqiang2008-06-22 12:55
问题已解决
五楼的程序当第二次循环石,c的值要重新赋值,作了小修改即可,修改如下:
#include <iostream.h>
#include <math.h>
int main()
{
    int a,b,c,i,d;
    for(i=1;i<10;i++)
    {
        c=0;
        cout<<"请输入一个数,将判断是否位素数,不是素数,将求出其因子,请输入:";
        cin>>a;
        if(a<2 && a>0)    cout<<"这不是素数。"<<endl;
        if (a>=2)
        {
            cout<<a<<"的非1因子:";
            for (d=2;d<=(int)sqrt(a);d++)
            {   
                if (a%d==0) {cout<<d<<","<<a/d<<endl;c++;}
            }
            if (c==0) cout<<"不存在\n"<<a<<"是素数"<<endl;   
        }
    }
    return 0;
}
#9
江湖贫侠2008-06-22 16:22
考虑不周 惭愧惭愧 多谢楼上斧正
#10
守鹤2008-06-22 16:28
#include "iostream"
#include  "cmath"
using  namespace  std;
bool  cmpsu(int a);
int  outin(int a,int b[]);
int  main()
{
    int  m,s,count,*store;
    cin>>m;
    s=int(sqrt(m));
    store=new int[s];
    bool check;
    cout<<"请输入一个数,判断是否为素数"<<endl;

    check=cmpsu(m);
    if(check==true)
        cout<<m<<"是素数"<<endl;
    else
    {    cout<<m<<"不是素数:"<<endl;
        count=outin(m,store);
        cout<<"输出其因子:"<<endl;
        for(int i=0;i<count;i++)
            cout<<store[i]<<"    ";
    }
    cout<<endl<<"程序结束"<<endl;
    return 0;

}
bool cmpsu(int a)
{
    int i,key=0;
    bool  t;
    for(i=2;i<=int(sqrt(a));i++)
        if(a%i==0)
        {key=1;
        }
    if(key==0)
        t=true;
    else  t=false;
    return  t;
}
int  outin(int a,int b[])
{
    int i,j=0;
    for(i=2;i<a;i++)
        if(a%i==0)
        {    b[j]=i;
            j++;
        }
    return  j;
}

应该没有问题的
#11
keqiang2008-06-22 17:12
谢谢10楼!!!
1