#include<stdio.h> int main() { int a; int num=0; scanf("%d",&a); for(int i=1;i<a;i++) { int num =0; for(int j=1;j<i;j++) { if(i%j==0) num+=j; if(i==num) printf("%d\n",i); } } return 0; } 各位大佬,为什么我在内层循环里面加了两个花括号会显示输出超限???
#include<stdio.h> void sss(int a) //求因数 { int i,j,sum; sum=0; for(i=1;i<a;i++) { if(a%i==0) { j=i; sum+=j; //求完数 } } if(sum==a) { printf("%d its factors are ",a); for(i=1;i<a;i++) { if(a%i==0) printf("%d ",i); } printf("\n"); } } int main() { int n,i; scanf("%d",&n); for(i=1;i<n;i++) sss(i); return 0; }
//求“完数”,即a%b=0. #include<stdio.h> int main(){ //第一步:先求出这个数的因子。 int i,S,n,j,N,k=0,arr[k];//S是每个数的因子之和. scanf("%d",&N); //内层循环求因子,外层循环求完数. for(i=1,k=0;i<=N,k<=n;i++,k++){ for(j=1;j<=i;j++,k++){ if(i%j==0 && i != j) arr[k]=i;//求出每一个数的因子放在数组中 } n=sizeof(arr)/sizeof(int); S+=arr[k];//将数组中的所有因子求和 if(i==S){//判断是否为完数 for(k=0;k<=n;k++) printf("%d its factors are %d ",j,arr[k]);} } return 0;} 大佬看看为啥不行啊???
为什么是l<k,而不是l<=k?
0205李少明19 2022-02-03 20:12:42 |
这样的话就会把i也加进去,原题说的不用加i,例如1+2+3=6是没有加6的
暗中讨饭 2022-02-04 15:32:48 |
@luokeli 但是上面不是说了j<i了吗,不是原本就取不到i吗?k是从0开始的吧,如果因子是三个那么就是k0,k1,k2;下面l<k的话,不是只有了l[0],l[1]两个因子了吗?
暗中讨饭 2022-02-04 15:52:51 |
@luokeli 但是上面不是说了j小于i了吗,不是原本就取不到i吗?k是从0开始的吧,如果因子是三个那么就是k0,k1,k2;下面l小于k的话,不是只有了l[0],l[1]两个因子了吗?
0205李少明19 2022-02-06 14:58:25 |
k++是先表达原来的值之后在实现自增,也就是说最后是K3
0205李少明19 2022-02-06 14:59:10 |
最后的K是比你说的那个大1的
0205李少明19 2022-02-06 15:00:12 |
最后如果你一定要等于的话,他多出来的那个值没有,所以只能出来一个随机数
0205李少明19 2022-02-06 15:03:23 |
我一开始写的代码和他不一样所以一开始说的可能不对,那个是我一开始出现的错误
暗中讨饭 2022-02-06 22:48:12 |
@luokeli 对啊对啊,你写的代码也是k的初始值为0吗?如果为0,假设有三个因子,因为k++是先原来的值再自增,那么第一个因子不就是k0吗,三个因子分别是k0,k1,k2?
0205李少明19 2022-02-07 15:50:12 |
对啊
暗中讨饭 2022-02-07 23:44:05 |
@luokeli 哈哈哈哈又回到原点,所以楼主的代码k++从0到k不是k+1个值吗,那为什么l从0到k-1一共k个值了?
0205李少明19 2022-02-08 13:50:53 |
l=0;l<k;l++这个是k-1个的,可能我不太理解你说的什莫意思
#include<stdio.h> #define max 1001 int main() { int N,a,b,i,k,m[max],n; scanf("%d",&N); for(i=1;i<N;i++) { a=0; k=0; for(b=1;b<i;i++) { if(i%b==0) { a=a+b; m[k++]=b; } } if(a==i) { printf("%d its factors are ",i); for(n=0;n<k;n++) printf("%d\t",m[n]); printf("\n"); } } return 0; } 我这有啥问题啊!
#include<stdio.h> #define max 1001 int main() { int i,j,s,n,a[max],l,k=0; scanf("%d",&n); for (i=2;i<=n;i++) { s=0; for(j=1;j<i;j++) {if(i%j==0) {s+=j;a[j]=j;} if(s==i){printf("%d its factors are\n",i); for(l=0;l<k;l++){printf("%d",a[l]);} printf("\n"); } } return 0; } } 请问这个能过编译,但是是错的,能告诉我错哪里吗?
李淳罡 2022-03-08 09:27:05 |
#include<stdio.h> void factor(int i) { int n,k; for(n=1;n<i;n++){ k=i%n; if(k==0){ printf("%d ",n); } } printf(" "); } int main() { int n=6,i,k,j,sum; scanf("%d",&n); for(i=2;i<=n;i++){ sum=0; for(k=1;k<i;k++){ j=i%k; if(j==0){ sum+=k; } } if(sum==i){ printf("%d its factors are ",i); factor(i); } } return 0; }
#include <stdio.h> int main() { int n=0; int i=0; int a; int b; int sum; int c=0; int d; scanf("%d",&n); for(i=2;i<=n;i++){ sum=0; for(a=1;a<i;a++){ b=i%a; if(b==0){ sum+=a; } if(a==i-1){ if(sum==i){ printf("%d its factors are ",i); for(c=1;c<sum;c++){ d=sum%c; if(d==0){ printf("%d ",c); } if(c==sum-1){ printf("\n"); } } } } } } return 0; } 没用数组,但麻烦:(
白色枫叶 2022-01-11 15:32:23 |
稍微提一嘴,楼主的数组长度用变量定义,这是c99的语法,如果是准备二级的人的话,这不能用(二级用的是ANSI C)题主的解法挺好看的,比我这堆清爽的多:)