| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1071 人关注过本帖
标题:求助,一个程序只完成了一半,另一半不知怎样做。
只看楼主 加入收藏
keqiang
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2008-5-20
收藏
 问题点数:0 回复次数:10 
求助,一个程序只完成了一半,另一半不知怎样做。
这个程序代码如下:
#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;
}
}

需要帮助的地方:如果不是素数,可以求出其因子,但如果是素数就不知怎么把它显示出来了。
搜索更多相关主题的帖子: include 
2008-06-21 22:15
柳丝飘絮
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-4-7
收藏
得分:0 
2也是素数
2008-06-21 23:24
keqiang
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2008-5-20
收藏
得分:0 
2是素数,这修该过来容易,一楼会输出素数吗?在线等答案
2008-06-21 23:30
keqiang
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2008-5-20
收藏
得分:0 
2008-06-22 00:18
江湖贫侠
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2008-4-10
收藏
得分:0 
帮你稍微改了一下
#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;
}
2008-06-22 09:55
江湖贫侠
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2008-4-10
收藏
得分:0 
if (a%d==0) {cout<<d<<","<<a/d<<endl;;c++;}
这行不小心多打了个;号
2008-06-22 09:56
keqiang
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2008-5-20
收藏
得分:0 
程序运行还有点问题
谢谢五楼。但我在程序运行时还发现这个程序还存在一些问题。
问题是当程序第一次要求输入数字时输入了一个非素数,然后回车。第二次要求输入数字时输入素数时,又不能显示这个数是素数了。
2008-06-22 12:38
keqiang
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2008-5-20
收藏
得分:0 
问题已解决
五楼的程序当第二次循环石,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;
}
2008-06-22 12:55
江湖贫侠
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2008-4-10
收藏
得分:0 
考虑不周 惭愧惭愧 多谢楼上斧正
2008-06-22 16:22
守鹤
Rank: 4
来 自:山東臨沂
等 级:贵宾
威 望:12
帖 子:337
专家分:0
注 册:2008-6-20
收藏
得分:0 
#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;
}

应该没有问题的
2008-06-22 16:28
快速回复:求助,一个程序只完成了一半,另一半不知怎样做。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.054795 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved