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

遇到一个不借问题!——求素数的

cs3058672 发布于 2010-11-20 20:27, 658 次点击
//输入一个任意十个数,求其中的素数。
#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编译可以通过,无错误和警告。但进去之后一输入一个数,无论是什么数他就会自动显示错误,然后退出程序
5 回复
#2
cs30586722010-11-20 20:56
最后发现,是  if(1==isprime(a))这条语句错了,改成  if(1==isprime(i))就行了。

但有另外一个问题,就是为什么最后无法输出结果呢
#3
shafeilong2010-11-21 18:07
for(s=0;s<10;s++)
    {
        cin>>q[b];

你的s是干嘛用的??
b是虾米用的?
#4
pangding2010-11-21 19:31
嗯,感觉变量是挺多的,好多看不太出来是干什么用的……
#5
kittel2010-11-23 22:41
回复 楼主 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;
        
   
   
#6
qkhhss2010-11-24 09:57
本来很简单,是你把它弄复杂了.
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");
}
1