 Open in App
Not now

# Area of a Regular Pentagram

• Difficulty Level : Medium
• Last Updated : 01 Sep, 2022

Given a Pentagram and its inner side length(d). The task is to find out the area of Pentagram. The Pentagram is a five-pointed star that is formed by drawing a continuous line in five straight segments. Examples:

Input: d = 5
Output: Area = 139.187
Area of regular pentagram = 139.187

Input: d = 7
Output: Area = 272.807

Idea is to use Golden Ratio between a/b, b/c, and c/d which equals approximately 1.618
Inner side length d is given so
c = 1.618 * d
b = 1.618 * c
a = 1.618 * b
AB, BC and CD are equal(both side of regular pentagram)
So AB = BC = CD = c and BD is given by d.

Area of pentagram = Area of Pentagon BDFHJ + 5 * (Area of triangle BCD)
Area of Pentagon BDFHJ = (d2 * 5)/ (4* tan 36)
Area of triangle BCD = [s(s-d)(s-c)(s-c)]1/2 {Heron’s Formula}
where
s = (d + c + c)/2

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach` `#include ` `#define PI 3.14159` `using` `namespace` `std;`   `// Function to return the area of triangle BCD` `double` `areaOfTriangle(``float` `d)` `{` `    ``// Using Golden ratio` `    ``float` `c = 1.618 * d;` `    ``float` `s = (d + c + c) / 2;`   `    ``// Calculate area of triangle BCD` `    ``double` `area = ``sqrt``(s * (s - c) * (s - c) * (s - d));`   `    ``// Return area of all 5 triangle are same` `    ``return` `5 * area;` `}`   `// Function to return the area of regular pentagon` `double` `areaOfRegPentagon(``float` `d)` `{` `    ``// Calculate the area of regular` `    ``// pentagon using above formula` `    ``double` `cal = 4 * ``tan``(PI / 5);` `    ``double` `area = (5 * d * d) / cal;`   `    ``// Return area of regular pentagon` `    ``return` `area;` `}`   `// Function to return the area of pentagram` `double` `areaOfPentagram(``float` `d)` `{` `    ``// Area of a pentagram is equal to the` `    ``// area of regular  pentagon and five times` `    ``// the area of Triangle` `    ``return` `areaOfRegPentagon(d) + areaOfTriangle(d);` `}`   `// Driver code` `int` `main()` `{` `    ``float` `d = 5;` `    ``cout << areaOfPentagram(d) << endl;`   `    ``return` `0;` `}`

## Java

 `// Java implementation of above approach` `public` `class` `GFG {`   `    ``static` `double` `PI = ``3.14159``;`   `    ``// Function to return the area of triangle BCD` `    ``static` `double` `areaOfTriangle(``float` `d)` `    ``{` `        ``// Using Golden ratio` `        ``float` `c = (``float``)(``1.618` `* d);` `        ``float` `s = (d + c + c) / ``2``;`   `        ``// Calculate area of triangle BCD` `        ``double` `area` `            ``= Math.sqrt(s * (s - c) * (s - c) * (s - d));`   `        ``// Return area of all 5 triangle are same` `        ``return` `5` `* area;` `    ``}`   `    ``// Function to return the area of regular pentagon` `    ``static` `double` `areaOfRegPentagon(``float` `d)` `    ``{` `        ``// Calculate the area of regular` `        ``// pentagon using above formula` `        ``double` `cal = ``4` `* Math.tan(PI / ``5``);` `        ``double` `area = (``5` `* d * d) / cal;`   `        ``// Return area of regular pentagon` `        ``return` `area;` `    ``}`   `    ``// Function to return the area of pentagram` `    ``static` `double` `areaOfPentagram(``float` `d)` `    ``{` `        ``// Area of a pentagram is equal to the` `        ``// area of regular pentagon and five times` `        ``// the area of Triangle` `        ``return` `areaOfRegPentagon(d) + areaOfTriangle(d);` `    ``}`   `    ``// Driver code` `    ``public` `static` `void` `main(String[] args)` `    ``{` `        ``float` `d = ``5``;` `        ``System.out.println(areaOfPentagram(d));` `    ``}` `}`   `// This code has been contributed by 29AjayKumar`

## Python3

 `# Python3 implementation of the approach`   `import` `math`   `PI ``=` `3.14159`   `# Function to return the area of triangle BCD` `def` `areaOfTriangle(d):`   `    ``# Using Golden ratio` `    ``c ``=` `1.618` `*` `d` `    ``s ``=` `(d ``+` `c ``+` `c) ``/` `2`   `    ``# Calculate area of triangle BCD` `    ``area ``=` `math.sqrt(s ``*` `(s ``-` `c) ``*` `                     ``(s ``-` `c) ``*` `(s ``-` `d))`   `    ``# Return area of all 5 triangles are the same` `    ``return` `5` `*` `area`     `# Function to return the area of regular pentagon` `def` `areaOfRegPentagon(d):`   `    ``global` `PI` `    ``# Calculate the area of regular` `    ``# pentagon using above formula` `    ``cal ``=` `4` `*` `math.tan(PI ``/` `5``)` `    ``area ``=` `(``5` `*` `d ``*` `d) ``/` `cal`   `    ``# Return area of regular pentagon` `    ``return` `area`     `# Function to return the area of pentagram` `def` `areaOfPentagram(d):`   `    ``# Area of a pentagram is equal to the` `    ``# area of regular pentagon and five times` `    ``# the area of Triangle` `    ``return` `areaOfRegPentagon(d) ``+` `areaOfTriangle(d)`     `# Driver code` `d ``=` `5` `print``(areaOfPentagram(d))`     `# This code is contributed by ihritik`

## C#

 `// C# implementation of the above approach` `using` `System;`   `class` `GFG {`   `    ``static` `double` `PI = 3.14159;`   `    ``// Function to return the area of triangle BCD` `    ``static` `double` `areaOfTriangle(``float` `d)` `    ``{` `        ``// Using Golden ratio` `        ``float` `c = (``float``)(1.618 * d);` `        ``float` `s = (d + c + c) / 2;`   `        ``// Calculate area of triangle BCD` `        ``double` `area` `            ``= Math.Sqrt(s * (s - c) * (s - c) * (s - d));`   `        ``// Return area of all 5 triangle are same` `        ``return` `5 * area;` `    ``}`   `    ``// Function to return the area of regular pentagon` `    ``static` `double` `areaOfRegPentagon(``float` `d)` `    ``{` `        ``// Calculate the area of regular` `        ``// pentagon using above formula` `        ``double` `cal = 4 * Math.Tan(PI / 5);` `        ``double` `area = (5 * d * d) / cal;`   `        ``// Return area of regular pentagon` `        ``return` `area;` `    ``}`   `    ``// Function to return the area of pentagram` `    ``static` `double` `areaOfPentagram(``float` `d)` `    ``{` `        ``// Area of a pentagram is equal to the` `        ``// area of regular pentagon and five times` `        ``// the area of Triangle` `        ``return` `areaOfRegPentagon(d) + areaOfTriangle(d);` `    ``}`   `    ``// Driver code` `    ``public` `static` `void` `Main()` `    ``{` `        ``float` `d = 5;` `        ``Console.WriteLine(areaOfPentagram(d));` `    ``}` `}`   `// This code has been contributed by ihritik`

## Javascript

 ``

Output

```139.187
```

Time Complexity : O(log(N)), for using in-built sqrt() function.
Auxiliary Space: O(1)

My Personal Notes arrow_drop_up
Related Articles