编写程序找出1000以内的完全数(c++)
3个回答
展开全部
#include <stdio.h>
bool isPerfect(int n)
{
int sum = 1;
for(int i=2; i*i<=n; i++)
{
if(n%i==0) sum += i + n/i;
}
if (sum == n) return true;
return false;
}
int main()
{
int i, count;
count = 0;
for(i=1; i<=1000; i++) {
if (isPerfect(i)) {
count ++;
printf("%d ",i);
}
}
printf("\n共有%d个完全数\n", count);
return 0;
}
编程序是指在利用电子计算机自动处理问题,人们根据自己对信息处理的要求,给电子计算机设计指令。
学习编写
1、首先要明确自己的学习目的,为什么要学习编程。如果是要考级,那么建议学VB,因为它语句比较简单,易上手;如果是真的要掌握一项技术搞研发之用,那么建议学习C++或Java,因为它们语句功能很强大,虽然难度大一点但很实用;
2、选择自己要学习语言种类,如VB,C++,Java等 ;
3、最好找一个辅导班配合书本同步学习,因为程序的问题如果自己只是看书的话很难理解,有前辈指点会有事半功倍的效果;
4、语句和循环是最基本的结构,所以无论学习任何语言都要把它们掌握好,这是在学习过程中一定要注意的;
5、一定要多上机操作。程序是抽象的,有时看程序看的懂,但自己去编却不一定能编的出来;而有时候虽然程序没看懂,但如果经常着手去编,就会非常熟悉该程序用的时候应该怎么去处理,时间久了自然就理解了;
6、有了一点的操作基础以后,就要去背一些简单的语句体了,这些小的语句在你以后编的大程序里是基础的基础
7、最后就是独立编程了,看到一个编程要求之后,首先要在脑中有一个大体的轮廓,独立构思,不要看参考揭示,只有这样才可以达到真正的训练目的,才可以一步步地把思路培养出来。
bool isPerfect(int n)
{
int sum = 1;
for(int i=2; i*i<=n; i++)
{
if(n%i==0) sum += i + n/i;
}
if (sum == n) return true;
return false;
}
int main()
{
int i, count;
count = 0;
for(i=1; i<=1000; i++) {
if (isPerfect(i)) {
count ++;
printf("%d ",i);
}
}
printf("\n共有%d个完全数\n", count);
return 0;
}
编程序是指在利用电子计算机自动处理问题,人们根据自己对信息处理的要求,给电子计算机设计指令。
学习编写
1、首先要明确自己的学习目的,为什么要学习编程。如果是要考级,那么建议学VB,因为它语句比较简单,易上手;如果是真的要掌握一项技术搞研发之用,那么建议学习C++或Java,因为它们语句功能很强大,虽然难度大一点但很实用;
2、选择自己要学习语言种类,如VB,C++,Java等 ;
3、最好找一个辅导班配合书本同步学习,因为程序的问题如果自己只是看书的话很难理解,有前辈指点会有事半功倍的效果;
4、语句和循环是最基本的结构,所以无论学习任何语言都要把它们掌握好,这是在学习过程中一定要注意的;
5、一定要多上机操作。程序是抽象的,有时看程序看的懂,但自己去编却不一定能编的出来;而有时候虽然程序没看懂,但如果经常着手去编,就会非常熟悉该程序用的时候应该怎么去处理,时间久了自然就理解了;
6、有了一点的操作基础以后,就要去背一些简单的语句体了,这些小的语句在你以后编的大程序里是基础的基础
7、最后就是独立编程了,看到一个编程要求之后,首先要在脑中有一个大体的轮廓,独立构思,不要看参考揭示,只有这样才可以达到真正的训练目的,才可以一步步地把思路培养出来。
2013-11-27
展开全部
有了完全数公式,对于一个数是否是完全数,只要代入公式一试即可。
例:求 a = p k 是否为完全数?( p 奇素数,k ∈N )
解:按完全数公式
2×p k = (1 +p + p 2 +… + pk)= (pk -1)/(p-1) + pk
∵左边=2×p k,右边=(pk -1)/(p-1) + pk<2×p k
∴ 该题无解, a = pk 不是完全数。
PASCAL程序 判断 A~ B 区域内的完全数为
program wanquanshu;
var i,a,b:longint;
function wanquanshu(i:longint):boolean;
var sum,k:longint;
begin
sum:=1;
for k:= 2 to i div 2 do
if i mod k=0 then sum:=sum+k;
if i=sum then wanquanshu:= true
else wanquanshu:=false;
end;
begin
repeat
readln(a,b);
until (a>0) and (b>0) and (b>a);
for i:= a to b do
if wanquanshu(i) then writeln(i);
end.
不会C++
例:求 a = p k 是否为完全数?( p 奇素数,k ∈N )
解:按完全数公式
2×p k = (1 +p + p 2 +… + pk)= (pk -1)/(p-1) + pk
∵左边=2×p k,右边=(pk -1)/(p-1) + pk<2×p k
∴ 该题无解, a = pk 不是完全数。
PASCAL程序 判断 A~ B 区域内的完全数为
program wanquanshu;
var i,a,b:longint;
function wanquanshu(i:longint):boolean;
var sum,k:longint;
begin
sum:=1;
for k:= 2 to i div 2 do
if i mod k=0 then sum:=sum+k;
if i=sum then wanquanshu:= true
else wanquanshu:=false;
end;
begin
repeat
readln(a,b);
until (a>0) and (b>0) and (b>a);
for i:= a to b do
if wanquanshu(i) then writeln(i);
end.
不会C++
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-11-27
展开全部
#include <iostream>
using namespace std;
void main()
{
int i,j,k;
for(i=1;i<=1000;i++)
{
k=0;
for(j=1;j<=i/2;j++)
if(i%j==0)
k+=j;
if(k==i)
cout<<i<<endl;
}
}
using namespace std;
void main()
{
int i,j,k;
for(i=1;i<=1000;i++)
{
k=0;
for(j=1;j<=i/2;j++)
if(i%j==0)
k+=j;
if(k==i)
cout<<i<<endl;
}
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询