首页 > 编程知识 正文

输入一个正整数,输出该数各位之和,求一个整数各个数字之和

时间:2023-05-03 18:34:36 阅读:282866 作者:376

思路分析:9位的整数,由不重复的1~9组成,注意分析出没有0。

每个数字只出现一次,那么最小的数是123456789,最大的数是987654321。

既然不重复,那么把每一位获取,比较9个数字不同即可。怎样比较,9个数字用a!=b&&a!=c......可不行,

想想把获取的数字放到数组里面,通过冒泡排序法比较数字是否有重复即可。不要说冒泡排序只能用来排序......

改良下代码就可以用了。

不为0且数字都不一样两个条件满足后,继续进行判断。

用一个循环判断前两位被2整除,前三位被3整除,......,前九位被9整除。条件满足输出,结束。

答案:381654729

详细代码如下:

public class testLargeNumber {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubint[] wei = new int[9]; //每一位int flag;int i, num,cnt=0,n,sum=0;//统计不相等和不为0的数量for (i = 123456789; i <= 987654321; i++) {num = i; //初始化num,如果直接用i,后面会变,小心!flag = 0;//用于判断是否满足条件// 计算每一位for (int j = 0; j < 9; j++) {wei[j] = num % 10;//System.out.println(wei[j]);num = num / 10;}// 判断有0或相等for (int k = 0; k < 9; k++) {if (wei[k] == 0) {flag = 1;break;}for (int m = k + 1; m < 9; m++) {if (wei[k] == wei[m]) {flag = 1;break;//跳出内循环}}if(flag==1){break;//跳出外循环}}//满足无0和每位都不相等,继续判断前几位被几整除if (flag == 0) {cnt=0;//计数置为0sum=wei[8];for(n=8;n>=1;n--){sum=sum*10+wei[n-1];if(sum%(10-n)==0){cnt++; //计数增加}}if(cnt==8){//前2位被2整除到前9位被9整除有8个System.out.println(i); //这里用到i了,之前用num来执行}}}//System.out.println(cnt);}}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。