Skip to content

Add SociableNumber Implementation#7475

Open
Rosander0 wants to merge 1 commit into
TheAlgorithms:masterfrom
Rosander0:add-sociable-number
Open

Add SociableNumber Implementation#7475
Rosander0 wants to merge 1 commit into
TheAlgorithms:masterfrom
Rosander0:add-sociable-number

Conversation

@Rosander0

Copy link
Copy Markdown
Contributor
  • I have read CONTRIBUTING.md.
  • This pull request is all my own work -- I have not plagiarized it.
  • All filenames are in PascalCase.
  • All functions and variable names follow Java naming conventions.
  • All new algorithms have a URL in their comments that points to Wikipedia or other similar explanations.
  • All new algorithms include a corresponding test class that validates their functionality.
  • All new code is formatted with clang-format -i --style=file path/to/your/file.java

@codecov-commenter

codecov-commenter commented Jun 14, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 79.82%. Comparing base (6fbbc94) to head (f37df6b).

Additional details and impacted files
@@             Coverage Diff              @@
##             master    #7475      +/-   ##
============================================
+ Coverage     79.80%   79.82%   +0.02%     
- Complexity     7302     7314      +12     
============================================
  Files           803      804       +1     
  Lines         23751    23766      +15     
  Branches       4671     4676       +5     
============================================
+ Hits          18955    18972      +17     
  Misses         4036     4036              
+ Partials        760      758       -2     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@Rosander0 Rosander0 force-pushed the add-sociable-number branch 2 times, most recently from d58f8a5 to 6867c86 Compare June 14, 2026 09:09
@Rosander0 Rosander0 changed the title feat: add SociableNumber implementation Add SociableNumber Implementation Jun 14, 2026
@Rosander0 Rosander0 force-pushed the add-sociable-number branch from 6867c86 to f4ed961 Compare June 14, 2026 09:53

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new number-theory algorithm for detecting whether a given integer belongs to a sociable-number cycle of a specified length, along with JUnit tests validating known sociable/amicable examples and invalid inputs.

Changes:

  • Introduce SociableNumber utility with isSociable(number, cycleLength) and a proper-divisor-sum helper.
  • Add SociableNumberTest covering a length-5 sociable cycle, amicable pairs (length 2), non-sociable values, and invalid inputs.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.

File Description
src/main/java/com/thealgorithms/maths/SociableNumber.java New sociable-number implementation (isSociable) and proper-divisor-sum helper.
src/test/java/com/thealgorithms/maths/SociableNumberTest.java New unit tests for sociable-cycle detection and edge cases.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +1 to +14
package com.thealgorithms.maths;
// author: Vraj Prajapati @Rosander0

/**
* Sociable numbers are natural numbers that form a cyclic sequence where the
* sum of proper divisors of each number equals the next number in the sequence,
* with the sequence eventually returning to the starting number.
* Amicable numbers are a special case of sociable numbers with a cycle length of 2.
* Example: (12496, 14288, 15472, 14536, 14264) is a sociable cycle of length 5.
*
* @see <a href="https://en.wikipedia.org/wiki/Sociable_number">
* Wikipedia: Sociable Number</a>
* @see AmicableNumber
*/
Comment on lines +21 to +32
static int sumOfProperDivisors(final int number) {
if (number <= 0) {
return 0;
}
int sum = 0;
for (int i = 1; i < number; i++) {
if (number % i == 0) {
sum += i;
}
}
return sum;
}
Comment on lines +1 to +10
package com.thealgorithms.maths;
// author: Vraj Prajapati @Rosander0

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;

import org.junit.jupiter.api.Test;

public class SociableNumberTest {
Comment on lines +39 to +40
// 220 has cycle length 2, asking for length 3 hits line 60
// because current returns to 220 at step 2, but cycleLength-1 = 2 != 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants