用C语言编程:输出2~100之间所有完数,完数是指该数各因子之和等于该数本身
更新日期:2024.06.01
C语言程序如下:
#include <stdio.h>
int main()
{
long int i,j,sum;
for(i=2;i<100;i++)
{ sum=0;
for(j=2;j<=i/2;j++)
{
if(i%j==0)
{
sum=sum+j;
}
}
if(i==sum+1)
printf("%d
",i);
}
}
扩展资料:
如果一个数恰好等于它的因子之和,则称该数为“完全数”。
第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6。
第二个完全数是28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。
第三个完全数是496,有约数1、2、4、8、16、31、62、124、248、496,除去其本身496外,其余9个数相加,1+2+4+8+16+31+62+124+248=496。后面的完全数还有8128、33550336等等。
参考资料:百度百科-完全数
仅供参考,1000以内的:
//一个数如果恰好等于它的因子之和,这个数就称为“完数”。
//例如6的因子为1、2、3,而6=1+2+3,因此6是“完数”,
//编程找出1000以内的所有完数:
#include <stdio.h>
void main()
{
int x, i, sum;
x = 1;
while(x <= 1000) { //x要从1到1000循环。
sum = 0; //每算一个新的x时,sum要清0
for(i = 1; i < x; i++) if(x % i == 0) sum += i; //如果i是x的因子,sum加上i
if(x == sum) printf("%d\n", x); //如果因子和等于本身
x++;
}
}
程序运行结果:
6
28
496
#include <stdio.h>
void main()
{
int i,j,x,y;
for(i=2;i<=2000;i++)
{
x=i;
y=0;//将y的数值清零
for(j=1;j<i;j++)
{
if(x%j == 0)
{
y=y+j;
}
if(x==y)
{
if(j==(x-1))//确保除到x的上一位,避免出现还没有除到x的上一位就出现x==y的情况,如24数值。
printf("%d
",x);
}
}
}
}
#include<stdio.h>
int iswanshu(int);
int main(void){
int i;
for(i = 2; i<=100;i++){
if(iswanshu(i)){
printf("%d\n",i);
}
}
}
int iswanshu(int n){
int sum = 0;
int i;
for(i = 1;i<n;i++){
if(n % i == 0){
sum = sum +i;
}
}
if(sum == n){
return 1;
}
else
return 0;
}
项童凡1384 :答:【答案】:#include <stdio.h> int main() { int a[100],i=2,temp=0,total=0; while(i<=100) { i++; temp=i; if (i==2) { total+=i; } else { while(temp) { temp--; if (temp==1) { total+=i; break; } else if(temp!=1&&(i%temp)==0) break; } } } pr...
项童凡1384 :答:C语言程序如下:include <stdio.h> int main(){ long int i,j,sum;for(i=2;i<100;i++){ sum=0;for(j=2;j<=i/2;j++){ if(i%j==0){ sum=sum+j;} } if(i==sum+1)printf("%d\n",i);} }
项童凡1384 :答:if(a[i]==0)printf("%d ",i);} return 0;} 输出100以内的素数,思路:假如自然数N不是素数,则除1和其本身之外,必然至少存在两个数A和B,使得A*B=N,则A和B中必有一个大于或者等于sqrt(N),另一个小于或者等于sqrt(N)。下面是粗略证明如果N是合数,则必有一个小于或者等于根号N的素因...
项童凡1384 :答:1、首先新建一个空白的c语言文件,引入头文件,头文件中包括math库,稍后会用到,建立主函数:2、主函数上面新建一个判断素数的函数isPrime,判断依据是小于从2到算数平方根的数即是素数。然后在主函数中遍历2到100的数,调用isPrime判断满足素数条件就输出:3、写完代码最后打开编译后的调试窗口,屏幕就...
项童凡1384 :答:i;for(i = 2; i < a; i++)if(a % i == 0)break;if(a == i)return 1;elsereturn 0;}int main(void){int i;int sum = 0;for(i = 2; i < 100; i++){if(isprime(i)){printf("%d ",i);sum = sum + i;}}printf("\nsum = %d\n",sum);printf("\n");} ...
项童凡1384 :答:C语言求1到100偶数之和编程如下:include<stdio.h> main(){ int i,sum=0;for(i=0;i<=100;i=i+2){ sum=sum+i;} printf("%d",sum);} C语言特有特点:C语言是普适性最强的一种计算机程序编辑语言,它不仅可以发挥出高级编程语言的功用,还具有汇编语言的优点,因此相对于其它编程语言,它...
项童凡1384 :答:假设要输出100个数字:include<stdio.h> int main(){ int n=100;int i;for(i = 1; i <= n; i ++){ printf("%d ", i);if(i%5==0) printf("\n");} return 0;}
项童凡1384 :答:代码文本:include "stdio.h"int main(int argc,char *argv[]){ int n,k;for(k=0,n=1;n<22;n++)if(n%10+n/10!=3)printf(++k%10 ? "%4d" : "%4d\n",n);while(n<=100)printf(++k%10 ? "%4d" : "%4d\n",n++);putchar('\n');return 0;} ...
项童凡1384 :答:int sushu[98];//开辟个最大容量的,假设都是素数 /*从2开始,是素数就放入数组,然后用后面的数去除以这个数组的所有元素,都不能能整除就是素数 最后求和的时候把2去掉*/ int findsushu(){ int num = 1,n=0;sushu[0] = 2;for(int i=3;i<=100;i++){ n = 0;for(int j=0;j<...
项童凡1384 :答:main(){ int i;for (i=1;i<=100;i++) if (i%2 && i%3 && i%4) printf("%d\t",i);} 以上程序实现每行10个的办法是通过\t,无需其它任何代码,输出的结果自然每行10个,并且左边对齐。