| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 658 人关注过本帖
标题:遇到一个不借问题!——求素数的
只看楼主 加入收藏
cs3058672
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-11-20
结帖率:0
收藏
已结贴  问题点数:20 回复次数:5 
遇到一个不借问题!——求素数的
//输入一个任意十个数,求其中的素数。
#include<iostream>
#include<cmath>
using namespace std;
int isprime(int a)
{
   int i,sq;
   if(a<=1)
   {
     return 0;

   }
  sq=(int)sqrt(a);
   for(i=2;i<=sq;i++)
   {
       if(a%i==0)
       {
       break;
       }

   }
   if(i<=sq)
   {
        return 0;
   }
    else
    {
        return 1;
    }
}


int main()
{
    int a,s,q[10]={0},b,c,i;
    int p[10]={0};
    cout<<"请任意输入十个正整数:"<<endl;
    for(s=0;s<10;s++)
    {
        cin>>q[b];
        if(1==isprime(a))
        {
            q[b]=i;
                cout<<q[b]<<endl;
        }

   
    }

    return 0;
}





我用VC编译可以通过,无错误和警告。但进去之后一输入一个数,无论是什么数他就会自动显示错误,然后退出程序
搜索更多相关主题的帖子: 素数 
2010-11-20 20:27
cs3058672
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-11-20
收藏
得分:0 
最后发现,是  if(1==isprime(a))这条语句错了,改成  if(1==isprime(i))就行了。

但有另外一个问题,就是为什么最后无法输出结果呢
2010-11-20 20:56
shafeilong
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:236
专家分:1434
注 册:2009-3-21
收藏
得分:5 
for(s=0;s<10;s++)
    {
        cin>>q[b];

你的s是干嘛用的??
b是虾米用的?
2010-11-21 18:07
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:5 
嗯,感觉变量是挺多的,好多看不太出来是干什么用的……
2010-11-21 19:31
kittel
Rank: 2
来 自:武汉
等 级:论坛游民
威 望:1
帖 子:38
专家分:73
注 册:2010-11-19
收藏
得分:5 
回复 楼主 cs3058672
for(s=0;s<10;s++)
    {
        cin>>q[b];
        if(1==isprime(a))
        {
            q[b]=i;
                cout<<q[b]<<endl;
        }

   
    }

这段漏洞百出!b都没初始化,q[b]代表什么?i又代表什么?a又代表什么?都跟s没关系。而且像你这样的结构是每输入一个整数就判断是否是素数,而不是等输完十个数后再把素数输出来。应该这样改:
for(s=0;s<10;s++)
     cin>>q[s];
for(s=0;s<10;s++)
        if(1==isprime(q[s]))
cout<<q[s]<<" ";
cout<<endl;
        
   
   
2010-11-23 22:41
qkhhss
Rank: 1
等 级:新手上路
帖 子:10
专家分:5
注 册:2010-11-11
收藏
得分:5 
本来很简单,是你把它弄复杂了.
int main()
{
    int a[10];
    cout << "请输入十个正数!" << endl;
    for(int i = 0; i < 10; i++)
    cin >> a[i];
    for(int j = 0; j < 10; j++)
    if(isprime(a[j]))cout << a[j] << " ";

    system("pause");
}
2010-11-24 09:57
快速回复:遇到一个不借问题!——求素数的
数据加载中...
 
   



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

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