社区
C++ 语言
帖子详情
关于回文数和完全数的求解答!!!谢谢各位大侠!!
jessese
2004-11-09 12:42:41
1。求0~~20000的所有完全数,编写C++程序!完全数是恰好是因子的和!
例如6=1+2+3,28=1+2+4+7+14
2.求0~20000的所有回文数,编写C++程序!回文数例如:12321,121,23432等等!
...全文
297
19
打赏
收藏
关于回文数和完全数的求解答!!!谢谢各位大侠!!
1。求0~~20000的所有完全数,编写C++程序!完全数是恰好是因子的和! 例如6=1+2+3,28=1+2+4+7+14 2.求0~20000的所有回文数,编写C++程序!回文数例如:12321,121,23432等等!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jessese
2004-11-12
打赏
举报
回复
up!
dean456789
2004-11-12
打赏
举报
回复
#include<iostream>
using namespace std;
int i,sum;
int ws(int i);
void main()
{
for(i=1;i<=20000;i++)
{
sum=0;
ws(i);
if(sum==i)
cout<<i<<"是完数"<<endl;
}
}
int ws(int i)
{
int m;
for(m=1;m<i;m++)
{
if(i%m==0)
sum+=m;
}
return (sum);
}\\完数
dean456789
2004-11-12
打赏
举报
回复
#include<iostream>
using namespace std;
bool symm(long n)
{
long i, m;
i=n ; m=0 ;
while(i)
{
m=m*10+i%10;
i=i/10 ;
}
return ( m==n );
}
void main()
{
bool symm(long n);
long m;
for(m=11; m<20000; m++)
if (symm(m))
cout<<"m="<<m<<endl;
}//回文数
g8y
2004-11-11
打赏
举报
回复
学习
jessese
2004-11-11
打赏
举报
回复
up!
wikiexe
2004-11-11
打赏
举报
回复
to xuzheng318(forever C++) (老迈马甲NO.1)(学如逆水行舟,不进则退)
请问这段代码什么要加入到程序中,我觉得应该把它去掉才正确
for(i=1;i<k;i++) //找出不相等的公因子的乘积
{
int temp=gene[i]*gene[i+1];
for(j=i+1;j<n+1;j++)
{
if(temp>=number) {flag=0;break;}
if(temp==gene[j]) flag=0;
}
if(flag==0)
{
flag=1;
continue;
}
if(flag==1)
{
gene[n]=temp;
n++;
}
}
dick4610
2004-11-10
打赏
举报
回复
同意 xuzheng318(forever C++) 的
jessese
2004-11-10
打赏
举报
回复
简单的问题有最佳的求解方式也是个好的思维过程!谢谢大家的指教!
觉得简单的大侠也请献技。。。
Squall1009
2004-11-09
打赏
举报
回复
.......
都没什么难度,自己想一下就能写了,
为什么不自己动手呢?
wikiexe
2004-11-09
打赏
举报
回复
程序的结果应该与i的初始值没有关系呀
那么为什么i初始值为6时就能输出28
而i初始值为25时就只能输出30?
xuzheng318
2004-11-09
打赏
举报
回复
因为25就不是完全数!
wikiexe
2004-11-09
打赏
举报
回复
to xuzheng318(forever C++) (老迈马甲NO.1)(学如逆水行舟,不进则退)
请问为什么你的程序中把
for(int i=6;i<=MAX;i++)
改成
for(int i=25;i<=MAX;i++)
后
结果就不对了呢?
goodluckyxl
2004-11-09
打赏
举报
回复
想了想第二不需要用 容器
这样比较简单
#include <iostream>
using namespace std;
void main()
{
char IntToChar[10] = {0}, CharToInt[10] = {0};
int iCharToInt = 0, iCharNumber = 0, InputNum = 0;
cout<<"请输入要测试的:"<<endl;
cin>>InputNum;
for( int i = 0; i < InputNum; i++ )
{
memset( IntToChar, 0, 10 );
memset( CharToInt, 0, 10 );
itoa( i, IntToChar, 10 );
iCharNumber = strlen(IntToChar);
for( int j = 0; j < iCharNumber; j++ )
CharToInt[j] = IntToChar[iCharNumber-1-j];
iCharToInt = atoi(CharToInt);
if( iCharToInt == i )
cout<<i<<"是回数"<<endl;
}
}
yangfasheng
2004-11-09
打赏
举报
回复
自己试着写写看吧,
xuzheng318
2004-11-09
打赏
举报
回复
#include "stdio.h"
#include "string.h"
int check( char *str ); // 检查是否回文
int main()
{
int n;
char str[5];
for( n = 0; n<20000; ++n ) {
sprintf( str, "%d", n ); // 格式化为字符串
if( check( str ) ) // 输出回文
puts(str);
}
return 0;
}
int check( char *str )
{
int i, len, loop;
int res = 1;
len = strlen( str );
if( len == 1 )
return 1;
loop = len / 2; // 不用分奇偶数,因为奇数时,中间一个字符不用比较
for( i=0; i<loop; ++i ) {
if( str[i] != str[len-i-1] ) {
res = 0;
break;
}
}
return res;
}
goodluckyxl
2004-11-09
打赏
举报
回复
第二个 也是比较简单 写了看看
#include <iostream>
#include <vector>
using namespace std;
void main()
{
vector<char> SecondInstance;
vector<char>::iterator it;
char IntToChar[10] = {0};
int iCharNumber = 0;
int InputNum = 0;
cout<<"请输入要测试的:"<<endl;
cin>>InputNum;
for( int i = 0; i < InputNum; i++ )
{
memset( IntToChar, 0, 10 );
itoa( i, IntToChar, 10 );
iCharNumber = strlen(IntToChar);
for( int j = 0; j < iCharNumber; j++ )
SecondInstance.push_back(IntToChar[j]);
for( j = iCharNumber-1, it = SecondInstance.begin(); j >= 0; j--, it++ )
if( *it != IntToChar[j] )
break;
if( j == -1)
cout<<i<<"是回数"<<endl;
SecondInstance.clear();
}
}
xuzheng318
2004-11-09
打赏
举报
回复
#define MAX 10000
#include <iostream.h>
int search_g(int number,int gene[MAX]) //查找最小公因子
{
int i,j,k,n,flag=1;
n=number/2;
k=0;
for(i=1;i<=n;i++)
{
if(number%i==0)
{
gene[k]=i;
k++;
}
}
n=k;
for(i=1;i<k;i++) //找出不相等的公因子的乘积
{
int temp=gene[i]*gene[i+1];
for(j=i+1;j<n+1;j++)
{
if(temp>=number) {flag=0;break;}
if(temp==gene[j]) flag=0;
}
if(flag==0)
{
flag=1;
continue;
}
if(flag==1)
{
gene[n]=temp;
n++;
}
}
return(n);
}
void main()
{
int n,gene[MAX],num,sum;
for(int i=6;i<=MAX;i++)
{
sum=0;
num=i;
n=search_g(num,gene);
for(int j=0;j<n;j++)
sum=sum+gene[j];
if(num==sum)
cout<<num<<endl;
}
}
2~10000之内的所有完全数
fallhunter
2004-11-09
打赏
举报
回复
这个都要问么
自己写写看吧,不难
goodluckyxl
2004-11-09
打赏
举报
回复
第一个随手写了下
可以用
#include <iostream>
#include <set>
using namespace std;
void main()
{
set<int> FirstInstance;
set<int>::iterator it;
int InputNum = 0;
cout<<"请输入要测试的数:"<<endl;
cin>>InputNum;
int iResult = 0 ;
for( int i = 1; i < InputNum; i++ )
{
if( !(InputNum%i) )
{
if( FirstInstance.empty() )
{
FirstInstance.insert(i);
iResult += i;
}
else if( FirstInstance.find(i) == FirstInstance.end() )
{
FirstInstance.insert(i);
iResult += i;
}
}
}
if( iResult == InputNum )
cout<<InputNum<<"是完全数"<<endl;
else
cout<<InputNum<<"不是完全数"<<endl;
}
动态规划算法入门详解
线性DP详解(算法精讲+刷题实战5)1) 爬楼梯问题2) 数字三角形3) 最长上升子序列4) 最长公共子序列5) 最大连续子段和区间DP详解(算法精讲+刷题实战5)1) 游艇租赁2) 乘法难题3) 回文4) 括号匹配5) 猴子...
LeetCode刷题指南(Java版)
版权声明:本文为博主原创文章,未经博主允许不得转载。 ... 这位
大侠
,这是我的公众号:程序员江湖。 分享程序员面试与技术的那些事。 干货...
我在CSDN参与的3000个帖子
2:100分急求,随机输出十个小写字母,但是,要求这十个字母不相同 3:求Sn=a+aa+aaa+…+aaa…a(n个a)之值 4:数组题 望高手帮忙! 5:呵呵,来推荐一下我的网站,本站提供大量当今流行的免费的音乐和免费电影,...
python入门编程题库和
答
案,python基础编程入门
答
案
大家好,小编来为大家解
答
以下问题,python编程入门课后作业
答
案,python编程入门与案例详解,今天让我们一起来看看吧!
【python学习笔记】:99个 Python 小例子(练习版)
60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔...
C++ 语言
64,637
社区成员
250,559
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章