完美幂(1,4,8,9,16,25,27,…)
原文:https://www . geesforgeks . org/perfect-power-1-4-8-9-16-25-27/
A 完美幂是可以用另一个正整数的幂来表示的数。 给定一个数字 n,找出从 1 到 n 的 x y 类型的数字的个数,其中 x > = 1,y > 1 示例:
Input : n = 10
Output : 4
1 4 8 and 9 are the numbers that are
of form x ^ y where x > 0 and y > 1
Input : n = 50
Output : 10
一个简单的解决方案是通过从 i = 2 到 n 的平方根的所有幂的数字
C++
// CPP program to count number of numbers from
// 1 to n are of type x^y where x>0 and y>1
#include <bits/stdc++.h>
using namespace std;
// For our convenience
#define ll long long
// Function that keeps all the odd power
// numbers upto n
int powerNumbers(int n)
{
// v is going to store all power numbers
vector<int> v;
v.push_back(1);
// Traverse through all base numbers and
// compute all their powers smaller than
// or equal to n.
for (ll i = 2; i * i <= n; i++) {
ll j = i * i;
v.push_back(j);
while (j * i <= n) {
v.push_back(j * i);
j = j * i;
}
}
// Remove all duplicates
sort(v.begin(), v.end());
v.erase(unique(v.begin(), v.end()), v.end());
return v.size();
}
int main()
{
cout << powerNumbers(50);
return 0;
}
Java 语言(一种计算机语言,尤用于创建网站)
// Java program to count number of numbers from
// 1 to n are of type x^y where x>0 and y>1
import java.io.*;
import java.util.*;
public class GFG {
// Function that keeps all the odd power
// numbers upto n
static int powerNumbers(int n)
{
// v is going to store all unique
// power numbers
HashSet<Integer> v = new HashSet<Integer>();
v.add(1);
// Traverse through all base numbers
// and compute all their powers
// smaller than or equal to n.
for (int i = 2; i * i <= n; i++) {
int j = i * i;
v.add(j);
while (j * i <= n) {
v.add(j * i);
j = j * i;
}
}
return v.size();
}
// Driver code
public static void main(String args[])
{
System.out.print(powerNumbers(50));
}
}
// This code is contributed by Manish Shaw
// (manishshaw1)
Python 3
# Python3 program to count number
# of numbers from 1 to n are of
# type x^y where x>0 and y>1
# Function that keeps all the odd
# power numbers upto n
def powerNumbers(n):
# v is going to store all
# unique power numbers
v = set();
v.add(1);
# Traverse through all base
# numbers and compute all
# their powers smaller than
# or equal to n.
for i in range(2, n+1):
if(i * i <= n):
j = i * i;
v.add(j);
while (j * i <= n):
v.add(j * i);
j = j * i;
return len(v);
print (powerNumbers(50));
# This code is contributed by
# Manish Shaw (manishshaw1)
C
// C# program to count number of numbers from
// 1 to n are of type x^y where x>0 and y>1
using System;
using System.Collections.Generic;
using System.Linq;
class GFG {
// Function that keeps all the odd power
// numbers upto n
static int powerNumbers(int n)
{
// v is going to store all unique
// power numbers
HashSet<int> v = new HashSet<int>();
v.Add(1);
// Traverse through all base numbers
// and compute all their powers
// smaller than or equal to n.
for (int i = 2; i * i <= n; i++) {
int j = i * i;
v.Add(j);
while (j * i <= n) {
v.Add(j * i);
j = j * i;
}
}
return v.Count;
}
// Driver code
public static void Main()
{
Console.WriteLine(powerNumbers(50));
}
}
// This code is contributed by Manish Shaw
// (manishshaw1)
服务器端编程语言(Professional Hypertext Preprocessor 的缩写)
<?php
// PHP program to count number of
// numbers from 1 to n are of type
// x^y where x>0 and y>1
// Function that keeps all the
// odd power numbers upto n
function powerNumbers($n)
{
// v is going to store
// all power numbers
$v = array();
array_push($v, 1);
// Traverse through all base
// numbers and compute all
// their powers smaller than
// or equal to n.
for ($i = 2; $i * $i <= $n; $i++)
{
$j = $i * $i;
array_push($v, $j);
while ($j * $i <= $n)
{
array_push($v, $j * $i);
$j = $j * $i;
}
}
// Remove all duplicates
sort($v);
$v = array_unique($v);
return count($v);
}
// Driver Code
echo (powerNumbers(50));
// This code is contributed by
// Manish Shaw(manishshaw1)
?>
java 描述语言
<script>
// JavaScript program to count number of numbers from
// 1 to n are of type x^y where x>0 and y>1
// Function that keeps all the odd power
// numbers upto n
function powerNumbers(n)
{
// v is going to store all unique
// power numbers
let v = new Set();
v.add(1);
// Traverse through all base numbers
// and compute all their powers
// smaller than or equal to n.
for (let i = 2; i * i <= n; i++) {
let j = i * i;
v.add(j);
while (j * i <= n) {
v.add(j * i);
j = j * i;
}
}
return v.size;
}
document.write(powerNumbers(50));
</script>
Output:
10
版权属于:月萌API www.moonapi.com,转载请注明出处