十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
因为这里的sum实际上就是你要的完数,所以你在1到1000之内,没算一次完数,就需要把sum置为0;不然就像你把int sum=0;放到for(int i=1;i=1000;i++)之前,sum每次都没有置0,sum会一直累加,所以sum不会等于i,所以没有输出结果了
创新互联公司-专业网站定制、快速模板网站建设、高性价比东宁网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式东宁网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖东宁地区。费用合理售后完善,十载实体公司更值得信赖。
public class PerfectNumber{
private static String[] isPrefectnumber(int n){
int sum=0;
StringBuffer sBuffer = new StringBuffer();;
for (int i = 1; i n; i++) {
if (n % i == 0){
sum += i;
sBuffer.append(","+i);
}
}
if (sum==n) {
return sBuffer.toString().replaceFirst(",", "").split(",");
}else {
return new String[0];
}
}
public static void main(String[] args){
String[] al= isPrefectnumber(t);
if (al.length!=0) {
StringBuffer sb = new StringBuffer();
sb.append(t+"是完数,其因子为");
for (int i = 0; i al.length ; i++) {
sb.append(","+al[i]);
}
System.out.println(sb.toString());
} else {
System.out.println(t+"不是完数");
}
}
}
#include stdio.h
void main()
{
int i,j;
printf("1000之内的所有完数:\n");
for(i=6;i1000;i++){
int sum=0;
for(j=1;ji;j++){
if(i%j==0)
sum = sum+j;
}
if(sum==i)printf("%d,",i);
}
}
输出结果为:6,28,496
原代码中的sum 初始化的位置是错误的,导致结果不正确,正确代码请看我的回答。
扩展资料:
完数,一般指完全数,一个自然数如果它的所有真因子(即除了自身以外的约数)的和等于该数,那么这个数就是完全数,如:6的真因子有1 、2、3,6=1+2+3,所以6是一个完全数。
求1000以内的完数可以用C,C++、java和Pascal语言等,下面举例java语言实现代码。
用java编写1000以内的完数如下:
public class PerfectNumber { public static void main(String[] args) { System.out.println("1000以内的所有完数有:"); for (int i = 2; i 1000; i++) {// 遍历1000以内的所有整数 int sum = 0;// 定义和变量 for (int j = 1; j i; j++) { if (i % j == 0) {// 满足是i的因子,就累加 sum += j; } } if (sum == i) {// 满足因子之和等于i就打印该完数 System.out.print(i + " "); } } }}
直接把我的答案复制测试,一定通过。。
注意:类名
public class QiouWanQuanShu {
public static void main(String[] args) {
int sum=0; //用来存放因数的和
System.out.print("1000中de完全数有:");
for(int i=1;i=1000;i++){ //循环1000次
for(int j=1;ji;j++){
if(i%j==0) //判断除数是否被整除
sum=sum+j;
}
if(i==sum) //判断因数是否与这个数的本身想等
System.out.print(i+" ");
sum=0; //初始存放因数的和,下次循环继续用
}
}
}