本人学生,初学c++,有个题目不知道怎么弄,求大神解决。非常急。
7.计算并输出N以内最大的10个素数以及它们的和,N为用户任意输入的正整数(如:1000)。要求:(1)由于偶数不是素数,可以不考虑对偶数的处理。(2)需要考虑N以内的素...
7.计算并输出N以内最大的10个素数以及它们的和,N为用户任意输入的正整数(如:1000)。
要求:
(1)由于偶数不是素数,可以不考虑对偶数的处理。
(2)需要考虑N以内的素数个数没有超过10个的情况处理。
(3) 输出形式为:素数1+素数2+素数+…+素数10=总和值。
这是本人程序,不知道哪里出错了
#include <iostream>
using namespace std;
int main()
{
int a,b,j,sum=0,i=0;
cout<<"请输入一个正整数:";
cin>>a;
for(b=a;b<=a;b--)
{
for(j=1;j<=b;j++)
{
if(b%j==0)
i++;
}
sum+=b;
}
if(i<10)
cout<<"sum="<<sum<<endl;
return 0;
} 展开
要求:
(1)由于偶数不是素数,可以不考虑对偶数的处理。
(2)需要考虑N以内的素数个数没有超过10个的情况处理。
(3) 输出形式为:素数1+素数2+素数+…+素数10=总和值。
这是本人程序,不知道哪里出错了
#include <iostream>
using namespace std;
int main()
{
int a,b,j,sum=0,i=0;
cout<<"请输入一个正整数:";
cin>>a;
for(b=a;b<=a;b--)
{
for(j=1;j<=b;j++)
{
if(b%j==0)
i++;
}
sum+=b;
}
if(i<10)
cout<<"sum="<<sum<<endl;
return 0;
} 展开
4个回答
展开全部
你那程序根本就不对,b<=a 显然应该是b >=1
另外你只输出了 sum ,而且判断是否素数的过程也不对。
给你代码参考,但一定要读懂了
void main()
{
int n ;
int count=0;
double sum=0;
cout<<"input n";
cin>>n;
for(int i=n;i>=1;i--)
{
if(i%2==0)
continue;//偶数不处理
for(int j=2;j<=i-1;j++)
{
if(i%j==0)
break;//如果整除了跳出,说明不是素数
}
if(j==i)//说明是素数
{
count++;//计数器+1
if(count<=10)
{
cout<<i<<"+";//还没到十个就输出并求和
sum+=i;
}
else
break;//否则数量够了直接跳出,不在判断下边的了
}
}
cout<<"\b="<<sum<<endl;//输出\b去掉最后的+号
}
另外你只输出了 sum ,而且判断是否素数的过程也不对。
给你代码参考,但一定要读懂了
void main()
{
int n ;
int count=0;
double sum=0;
cout<<"input n";
cin>>n;
for(int i=n;i>=1;i--)
{
if(i%2==0)
continue;//偶数不处理
for(int j=2;j<=i-1;j++)
{
if(i%j==0)
break;//如果整除了跳出,说明不是素数
}
if(j==i)//说明是素数
{
count++;//计数器+1
if(count<=10)
{
cout<<i<<"+";//还没到十个就输出并求和
sum+=i;
}
else
break;//否则数量够了直接跳出,不在判断下边的了
}
}
cout<<"\b="<<sum<<endl;//输出\b去掉最后的+号
}
追问
看懂了,不过够晕的,没想到这么复杂,谢了。
展开全部
程序的逻辑存在很多问题
1 第一个for循环判断条件应该是b>1
2 没有判断是否为素数就直接求和
程序我修改一下,测试ok,你测试一下看,有问题再交流,多谢~
#include <iostream>
using namespace std;
int main()
{
int a,b,j,sum=0,i=0;
bool bFlag = false;
cout<<"请输入一个正整数:";
cin>>a;
for(b=a; b>=2; b--)
{
bFlag = true;
for(j=2;j<b;j++)
{
if(b%j==0)
{
bFlag = false;
break;
}
}
if (bFlag)
{
++i;
sum+=b;
if(i<10)
{
cout<<b<<"+";
}
else
{
cout<<b<<"=";
break;
}
}
}
if(i<10)
{
cout<<b<<"=";
}
cout<<sum<<endl;
return 0;
}
运行结果:
追问
其实你的也行,不过人家比你回答得快,所以不好意思了,感觉学这个好辛苦。
追答
是呀,没有什么捷径,只能多看书,多思考,多练习~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-04-21
展开全部
我去你的,看不懂,我只是来混经验的
来自:求助得到的回答
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
晕啊,你的逻辑!出了啥问题了?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询