[my0163] 完全数@HOBO浩
描述
求正整数 2 和 n 之间的完全数(一行一个数)。
完全数:因子之和等于它本身的自然数,如 6 = 1 + 2 + 3
输入
输入n(1 ≤ n ≤ 5000)。
输出
一行一个数,按由小到大的顺序。
输入样例
7
输出样例
6
提示
完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。
如果一个数恰好等于它的真因子之和,则称该数为“完全数”。第一个完全数是6,第二个完全数是28,第三个完全数是496。
中文名 完全数
外文名 Perfect number
(1)利用VB编程求10000以内完全数。
Dim a as Integer,b as Integer,c as Integer
For a = 1 To 10000
c = 0
For b = 1 To a \ 2
If a Mod b = 0 Then c = c + b
Next b
If a = c Then Print Str(a)
Next a
(2)利用C语言编程求1000以内完全数。
#include<stdio.h>
int main()
{
int i, j, s, n; /*变量i控制选定数范围,j控制除数范围,s记录累加因子之和*/
printf("请输入所选范围上限:");
scanf("%d", &n); /* n的值由键盘输入*/
for( i=2; i<=n; i++ )
{
s=0; /*保证每次循环时s的初值为0*/
for( j=1; j<i; j++ )
{
if(i%j == 0) /*判断j是否为i的因子*/
s += j;
}
if(s == i) /*判断因子这和是否和原数相等*/
printf("It's a perfect number:%d\n", i);
}
return 0;
}
(3)利用java语言编程求1000以内完全数。
public class test46 {
public static void main(String args[]) {
int sum = 0;
int i = 2,j = 1;
for(i = 2; i <= 10000; i++)
{
for(j = 1; j < i; j++)
{
if(i%j == 0)
sum = sum+j;
}
if(sum == i)
System.out.println(" " + sum);
sum = 0;
}
}
}
(4)利用JavaScript语言编程求N以内完全数。
function perfectNumber(N){
var nums = [], sum, i, j;
//0除以任意数都是0,所以从1开始
for (i = 0; i <= N; i++){
sum = 0
//完全数除以自己一半,求余肯定会大于0,所以用i/2
for(j = 1; j <= i/2; j++){
if (i % j === 0){
sum += j;
}
}
if (sum === i){
nums.push(i);
}
}
return nums;
}
我们已经发现的完全数有
6
28
496
8,128
33,550,336
8,589,869,056
137,438,691,328
2,305,843,008,139,952,128
2,658,455,991,569,831,744,654,692,615,953,842,176
代码:
#include <bits/stdc++.h>
using namespace std;
bool isPrime(int i) {
if (i <= 1) {
return false;
}
for (int j = 2; j <=sqrt(i); j++) {
if (i % j == 0) {
return false;
}
}
return true;
}
int main() {
int x,y;
cin >> x >> y;
for (int i = x; i <= y; i++) {
//等同于if(isPrime(i) == true)
if (isPrime(i)) {
cout << i << endl;
}
}
return 0;
}
[my0157]
输入一个正整数 n,输出 1~n 所有的素数。
#include <bits/stdc++.h>
using namespace std;
bool isPrime(int i){
bool f=true;
if(i<=1){
f=false;
}
for(int j=2;j<i;j++){
if(i%j==0){
f=false;
break;
}
}
return f;
}
int main() {
int n;
cin>>n;
for(int i=1;i<=n;i++){
if(isPrime(i)){
cout<<i<<endl;
}
}
return 0;
}
用false 或者 true
#include <bits/stdc++.h>
using namespace std;
bool isPrime(int i) {
if (i <= 1) {
return false;
}
for (int j = 2; j <=sqrt(i); j++) {
if (i % j == 0) {
return false;
}
}
return true;
}
int main() {
int n;
cin >> n;
for (int i = 1; i <= n; i++) {
//等同于if(isPrime(i) == true)
if (isPrime(i)) {
cout << i << endl;
}
}
return 0;
}
素数:曾称质数。一个大于1的正整数,如果除了1和它本身以外,不能被其他正整数整除,就叫素数。如2,3,5,7,11,13,17…。