I just can't seem to figure out the algorithm to use this in a program function that would determine if a number is a 'perfect number'.

Thanx,

Tony

It looks like you're new here. If you want to get involved, click one of these buttons!

- 140.8K All Categories
- 103.6K Programming Languages
- 6.4K Assembler Developer
- 401 Assembly Code Share
- 239 Getting started in assembly
- 4.6K x86 Assembly
- 1.9K Basic
- 97 Qbasic
- 39.9K C and C++
- 5.6K Beginner C/C++
- 330 C/C++ on Linux/Unix
- 450 C/C++ Windows API
- 522 C++ Builder
- 253 C++ Game Development
- 3.3K C++ MFC
- 103 C++.NET
- 404 Visual C++
- 2.9K C#
- 7.9K Delphi and Kylix
- 334 Advanced Delphi
- 360 Delphi beginners
- 4 Haskell
- 9.7K Java
- 56 Enterprise JavaBeans
- 1.3K Java Beginners
- 304 Java Server Pages
- 4.1K Pascal
- 1.3K Perl
- 11 Perl 6
- 2K PHP
- 546 Python
- 37 Ruby
- 4.4K VB.NET
- 258 Advanced VB.Net
- 1.6K VBA
- 20.8K Visual Basic
- 767 Access databases and VB
- 831 Advance Visual Basic
- 1.2K Beginner VB
- 2.6K Game programming
- 315 Console programming
- 90 DirectX Game dev
- 1 Minecraft
- 112 Newbie Game Programmers
- 2 Oculus Rift
- 9K Applications
- 1.8K Computer Graphics
- 279 3D Graphics
- 129 DirectX
- 125 OpenGL
- 740 Computer Hardware
- 9 Cooling & Overclocking
- 3.4K Database & SQL
- 1.1K Access
- 91 ADO Programming
- 288 MySQL
- 358 Oracle
- 440 SQL-Server
- 535 Electronics development
- 1.6K Matlab
- 628 Sound & Music
- 25 DirectSound
- 257 XML Development
- 3.3K Classifieds
- 199 Co-operative Projects
- 198 For sale
- 190 FreeLance Software City
- 1.9K Jobs Available
- 603 Jobs Wanted
- 209 Wanted
- 2.9K Microsoft .NET
- 1.8K ASP.NET
- 1.1K .NET General
- 22 .NET WEB-Services
- 129 .NET WinForms
- 14 .NET XML
- 50 ADO.NET
- 142 C# & VB.NET School Support
- 3.4K Miscellaneous
- 4 Join the Team
- 354 Comments on this site
- 69 Computer Emulators
- 2.1K General programming
- 187 New programming languages
- 621 Off topic board
- 200 Mobile & Wireless
- 72 Android
- 126 Palm Pilot
- 338 Multimedia
- 154 Demo programming
- 184 MP3 programming
- 0 Bash scripts
- 27 Cloud Computing
- 1 Witsbits Go Cloud
- 53 FreeBSD
- 1.7K LINUX programming
- 1 Awk scripting
- 332 Linux Support
- 0 Sed scripting
- 370 MS-DOS
- 0 Shell scripting
- 321 Windows CE & Pocket PC
- 4.1K Windows programming
- 177 COM/DCOM
- 61 Networking And Security
- 17 Windows 2003 Server
- 6 Windows Vista
- 176 Windows XP
- 939 Software Development
- 416 Algorithms
- 68 Object Orientation
- 24 RUP & UML
- 91 Project Management
- 95 Quality & Testing
- 268 Security
- 63 Evil Scripting
- 81 Hacking
- 7.7K WEB-Development
- 1.8K Active Server Pages
- 61 AJAX
- 4 Bootstrap Themes
- 55 CGI Development
- 28 ColdFusion
- 224 Flash development
- 1.4K HTML & WEB-Design
- 1.4K Internet Development
- 131 Mobile Internet & Messaging
- 211 Wireless development
- 2.2K JavaScript
- 37 JQuery
- 304 WEB Servers
- 153 Apache
- 79 IIS
- 150 WEB-Services / SOAP

## Comments

:

: I just can't seem to figure out the algorithm to use this in a program function that would determine if a number is a 'perfect number'.

:

: Thanx,

: Tony

:

this is a good question... explaining the answer would be rather difficult so i'd rather give you a small block of code to fiddle with. well here goes...

double temp; //temporary number

double number; //number entered by user

int sumofdivisors = 1; //sum of the divisors...duh

cout << "---Perfect Numbers---

";

cout << "Enter a number : ";

cin >> number;

for(int i = 2; i < number; i++) //loop until 1 less than number

{

temp = number / i; //perform division of

if(temp == (int)temp) //check if temp is a whole number (is it

//a divisor?)

{

sumofdivisors += temp; //increase sum of divisors by temp

//(whole number)

}

}

if(sumofdivisors == number) //check if the sum of divisors is

//equal to the number entered

{

if(sumofdivisors == 1) //check if number is 1

{

cout << "Sorry, that is not a perfect number.

";

return 0; //exit function or main()

}

cout << number << " is a perfect number!!

"; }

else

{ cout << "Sorry, that is not a perfect number.

"; }

thats about it... any errors or other questions, just post

:

: I just can't seem to figure out the algorithm to use this in a program function that would determine if a number is a 'perfect number'.

:

: Thanx,

: Tony

:

So, you need first to find all the factors for a number, right?

The factors are the values which which does not leave the remainder, except the divisors 1 and the value itself, so here is straight code, not optimized:

[code][code=000000][color=21C6FF]

bool IsPerfect (int iValue)

{

int iSum = 1;

for (int iDivisor=2; iDivisor<iValue; iDivisor++) {

if ((iValue % iDivisor) == 0) {

// No remainder:

iSum += iDivisor;

}

}

return (iSum == iValue); // returns 'true' if they are equal

}

[/color][/code][/code]

Test it, please... I didn't...

: :

: : I just can't seem to figure out the algorithm to use this in a program function that would determine if a number is a 'perfect number'.

: :

: : Thanx,

: : Tony

: :

:

: this is a good question... explaining the answer would be rather difficult so i'd rather give you a small block of code to fiddle with. well here goes...

:

: double temp; //temporary number

: double number; //number entered by user

: int sumofdivisors = 1; //sum of the divisors...duh

:

: cout << "---Perfect Numbers---

";

: cout << "Enter a number : ";

: cin >> number;

:

: for(int i = 2; i < number; i++) //loop until 1 less than number

: {

: temp = number / i; //perform division of

:

: if(temp == (int)temp) //check if temp is a whole number (is it

: //a divisor?)

: {

: sumofdivisors += temp; //increase sum of divisors by temp

: //(whole number)

: }

: }

:

: if(sumofdivisors == number) //check if the sum of divisors is

: //equal to the number entered

: {

: if(sumofdivisors == 1) //check if number is 1

: {

: cout << "Sorry, that is not a perfect number.

";

: return 0; //exit function or main()

: }

: cout << number << " is a perfect number!!

"; }

: else

: { cout << "Sorry, that is not a perfect number.

"; }

:

:

:

:

: thats about it... any errors or other questions, just post

:

:

Thank you so much. There is just one small thing I think needs changing.

at this line: if(sumofdivisors == number) should read

if(sumofdivisors + 1 == number) see original question above.

Other than that, you have helped me solve my problem. Thank you again.

:

: at this line: if(sumofdivisors == number) should read

: if(sumofdivisors + 1 == number) see original question above.

:

: Other than that, you have helped me solve my problem. Thank you again.

:

that will give you 1 extra because sumofdivisors is initialed to 1 already. the line reads: int sumofdivisors = 1;

so you shouldnt have to increase it by one.

: :

: : at this line: if(sumofdivisors == number) should read

: : if(sumofdivisors + 1 == number) see original question above.

: :

: : Other than that, you have helped me solve my problem. Thank you again.

: :

: that will give you 1 extra because sumofdivisors is initialed to 1 already. the line reads: int sumofdivisors = 1;

: so you shouldnt have to increase it by one.

:

Ahhhhhh, ok. Thanks again. I missed that!