java求100以内完数。
各位朋友帮我测试下我的代码。我手头没电脑,自己手写的代码intnum=0;for(inti=2;i<100;i++){for(intj=1;j<i;j++){if(i%j...
各位朋友帮我测试下我的代码。
我手头没电脑,自己手写的代码
int num=0;
for(int i=2;i<100;i++){
for(int j=1;j<i;j++){
if(i%j==0){
num=j+num;
}
}
if(num==i){
System.out.println(i);
}
}
如果有问题请指出,
如果没有问题,请给我看下打印结果谢谢哦。 展开
我手头没电脑,自己手写的代码
int num=0;
for(int i=2;i<100;i++){
for(int j=1;j<i;j++){
if(i%j==0){
num=j+num;
}
}
if(num==i){
System.out.println(i);
}
}
如果有问题请指出,
如果没有问题,请给我看下打印结果谢谢哦。 展开
5个回答
展开全部
看不懂的话给我发信息。我已经写的很详细了,有些基本语法要不懂,可以查下百度。
public class test{
//取出1-no之间的所有完数
public static void getWS(int no){
for(int i=4;i<=no;i++){//因为1,2,3肯定不是完数,就姑且从4开始检查,一直检查到no
if(checkWS(i)){
System.out.println(i);//调用checkWS(int n)方法,检查该整数是否是完数。如果该数是完数,输出。
}
}
}
//判断整数n是否是完数
public static boolean checkWS(int n){
int sum=1;//1肯定是一个能整除整数n的被除数,初始化n的所有因子之和sum
for(int i=2;i<=n/2;i++){
if(n%i==0){//%求余,如果余数等于0,则i为该整数的因子,那么把sum=sum+i.这里只检查从2到n/2之间的数,因为大于4的整数最大的因子不会超过他的一半, 这样能提高程序效率
sum+=i;
}
}
return sum==n?true:false;//如果最终因子和sum等于它本身则返回true,否则返回false
}
public static void main(String args[]){
getWS(100);//输出100内的完数,这里的数字填多少就找出1-多少之间的所有完数
}
}
public class test{
//取出1-no之间的所有完数
public static void getWS(int no){
for(int i=4;i<=no;i++){//因为1,2,3肯定不是完数,就姑且从4开始检查,一直检查到no
if(checkWS(i)){
System.out.println(i);//调用checkWS(int n)方法,检查该整数是否是完数。如果该数是完数,输出。
}
}
}
//判断整数n是否是完数
public static boolean checkWS(int n){
int sum=1;//1肯定是一个能整除整数n的被除数,初始化n的所有因子之和sum
for(int i=2;i<=n/2;i++){
if(n%i==0){//%求余,如果余数等于0,则i为该整数的因子,那么把sum=sum+i.这里只检查从2到n/2之间的数,因为大于4的整数最大的因子不会超过他的一半, 这样能提高程序效率
sum+=i;
}
}
return sum==n?true:false;//如果最终因子和sum等于它本身则返回true,否则返回false
}
public static void main(String args[]){
getWS(100);//输出100内的完数,这里的数字填多少就找出1-多少之间的所有完数
}
}
展开全部
for(int m=1;m<=100;m++)//从1开始取值
{
int s=0;//定义整型S
for(int i=1;i<m;i++)//
if(m%i==0) //如果M除以i整除
s=s+i;
if(s==m){ //如果S=M
System.out.print(s+" "); //输出完数
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有一点小问题这个需要在第一层循环里面把num重新赋值为0的 要不然就没结果了下面是我改过的代码
int sum;
for(int a=1;a<=100;a++)
{
sum=0;
for(int i=1;i<a;i++) //输出100以内的完数
{
if(a%i==0)
sum=sum+i;
}
if(sum==a){
System.out.println(a);
}
}
int sum;
for(int a=1;a<=100;a++)
{
sum=0;
for(int i=1;i<a;i++) //输出100以内的完数
{
if(a%i==0)
sum=sum+i;
}
if(sum==a){
System.out.println(a);
}
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有问题int num=0;应该放在第一个for循环里
for(int i=2;i<100;i++){
int num=0;
for(int j=1;j<i;j++){
if(i%j==0){
num=j+num;
}
}
if(num==i){
System.out.println(i);
}
}
for(int i=2;i<100;i++){
int num=0;
for(int j=1;j<i;j++){
if(i%j==0){
num=j+num;
}
}
if(num==i){
System.out.println(i);
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你这段程序语法上没有错误
执行后没有任何打印结果
你写这段程序想要得到的结果是什么?
执行后没有任何打印结果
你写这段程序想要得到的结果是什么?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |