c++弄一个程序来判断一个数字是不是完全数
弄一个c++程序,首先输入一个数字,确认是不是完全数,并输出它可以被除的数字.比如,6是个完全数,并可以被1,2,3和6除。...
弄一个c++程序,首先输入一个数字,确认是不是完全数,并输出它可以被除的数字.比如,6是个完全数,并可以被1,2,3和6除。
展开
展开全部
/*
6
6 = 1 + 2 + 3
28
28 = 1 + 2 + 4 + 7 + 14
1024
0
Press any key to continue
*/
#include <stdio.h>
#include <stdlib.h>
int main() {
int i,j,n,num,sum,a[16];
while(scanf("%d",&num) == 1 && num > 0) {
j = 0;
sum = 0;
for(n = 1; n <= num / 2; ++n) {
if(num % n == 0) {
sum += n;
a[j++] = n;
}
}
if(sum == num) {
printf("%d = ",num);
for(i = 0; i < j; ++i) {
if(i == j - 1) printf("%d",a[i]);
else printf("%d + ",a[i]);
}
printf("\n");
}
}
return 0;
}
追问
什么也不能显示!!!
追答
在1 -- 10000中,只有四个数是完美数:
6 = 1 + 2 + 3
28 = 1 + 2 + 4 + 7 + 14
496 = 1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248
8128 = 1 + 2 + 4 + 8 + 16 + 32 + 64 + 127 + 254 + 508 + 1016 + 2032 + 4064
如果你输入的不是这几个数,就不会显示任何信息。根据题目要求修改如下:
/*
8128
8128 = 1 + 2 + 4 + 8 + 16 + 32 + 64 + 127 + 254 + 508 + 1016 + 2032 + 4064
98
98不是完美数。
0
Press any key to continue
*/
#include <stdio.h>
#include <stdlib.h>
int main() {
int i,j,n,num,sum,a[300];
while(scanf("%d",&num) == 1 && num > 0) {
j = 0;
sum = 0;
for(n = 1; n <= num / 2; ++n) {
if(num % n == 0) {
sum += n;
a[j++] = n;
}
if(sum > num) break;
}
if(sum == num) {
printf("%d = ",num);
for(i = 0; i < j; ++i) {
if(i == j - 1) printf("%d",a[i]);
else printf("%d + ",a[i]);
}
printf("\n");
}
else printf("%d不是完美数。\n",num);
}
return 0;
}
展开全部
// Try:
#include <iostream>
using namespace std;
bool IsPerfectNumber(int a[10],int target){
int i,total,p_index;
bool YN=false;
total=p_index=0;
for (i=1;i<target;i++)
{
if(target%i==0){
a[p_index++]=i;
total+=i;
}
if(total==target){
YN=true;
return YN;
}
}
return YN;
}
int main(){
int a[10]={0};
int question;
cout<<"请输入一个数:";
cin>>question;
if(IsPerfectNumber(a,question)){
cout<<question<<"是完数,并可以被:";
for (int i=0;i<10&&a[i]!=0;i++) cout<<a[i]<<"、";
cout<<"\b除"<<endl;
}
else cout<<question<<"不是完数"<<endl;
return 1;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<iostream>
using namespace std;
void main()
{
int a,b=0,i;
cin>>a;
for(i=1;i<=a/2;i++)
if(a%i==0)b+=i;
if(a==b)
{
cout<<a<<"是完全数"<<endl;
for(i=1;i<=a/2;i++)
if(a%i==0)cout<<i<<" ";
cout<<a<<endl;
}
else cout<<a<<"不是完全数"<<endl;
}
using namespace std;
void main()
{
int a,b=0,i;
cin>>a;
for(i=1;i<=a/2;i++)
if(a%i==0)b+=i;
if(a==b)
{
cout<<a<<"是完全数"<<endl;
for(i=1;i<=a/2;i++)
if(a%i==0)cout<<i<<" ";
cout<<a<<endl;
}
else cout<<a<<"不是完全数"<<endl;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询