素数c++语言_c++语言:判断素数问题(二)
试题描述
给定 n 个(n<1000)小于 10000 的正整数,把其中的质数按升序输出。
输入
两行,第一行包含一个小于 1000 的正整数 n,第二行 n 个由空格隔开的正整数。
输出
若干个素数,从小到大排列,每两个素数间有一个空格。
输入示例
11
42 13 34 98 798 69 23 177 687 199 13
输出示例
13 23 199
我的程序:
#include<iostream>using namespace std;int main(){ int n,i,j,h=0,a[1001]={0},b[1001]={0},t=0; cin>>n; for(i=0;i<n;i++) { cin>>a[i]; } for(i=0;i<n;i++) { t=0; for(j=2;j<a[i];j++) { if(a[i]%j==0) { t=1; break; } } if(t==0) { b[h]=a[i]; h++; } } for(i=0;i<h-1;i++) { for(j=0;j<h-1;j++) { if(b[j]>b[j+1]) { swap(b[j],b[j+1]); } } } t=0; for(i=0;i<h-1;i++) { if(t==0) { cout<<b[i]; t++; } if(t==1) { cout<<" "<<b[i]; } } system("pause"); return 0;}(Dev-C++ 4.9.9.2)
请帮忙改错,谢谢!
最佳答案
你最后的输出有问题
....
for(i=0;i<h-1;i++) //这里,不要h-1,要用h
{
if(t==0)
{
cout<<b[i];
t++;
}
if(t==1) //这个也不对,上面是t++,不光是1要输出,其它的也要的
{
......
改为
for(i=0;i<h;i++)
{
if(t==0)
{
cout<<b[i];
t++;
}
else
....
另外,最后最好加个回车
追问:
谢谢!
其他回答
暂无其它回答!