用C语言写出完数的代码
时间: 2023-03-12 11:11:59 浏览: 96
#include <stdio.h>
int main()
{
int n, i, flag = 0;
printf("输入一个数:");
scanf("%d",&n);
for(i=2; i<=n/2; ++i)
{
// 如果能被整除,则表明不是完数
if(n%i==0)
{
flag=1;
break;
}
}
if (flag==0)
printf("%d是完数。",n);
else
printf("%d不是完数。",n);
return 0;
}
相关问题
输入1000之内的全部完数,要求每行输出五个, 并统计完数的个数。用C语言写出代码
在C语言中,一个完数是指一个大于1的自然数,其所有正因数(除了自身之外)加起来恰好等于它本身的和。为了完成这个任务,你可以编写一个循环程序,遍历并检查每个数是否为完数,然后按照每五行一组的方式输出,并统计完数的数量。以下是简单的示例代码:
```c
#include <stdio.h>
#include <stdbool.h>
// 完数检查函数
bool isPerfect(int num) {
int sum = 1;
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
sum += i;
if (i != num / i) { // 如果不是质因数的平方,则添加另一个因子
sum += num / i;
}
}
}
return sum == num && num > 1; // 检查是否是完全数并且大于1
}
int main() {
int count = 0; // 统计完数的个数
int start = 1;
while (count < 20) { // 输出前20个完数
bool found Five = false;
for (int i = start; i < start + 5 && i <= 1000; i++) {
if (isPerfect(i)) {
printf("%d ", i);
count++;
if (!foundFive && count % 5 == 0) { // 当找到第5个时换行
printf("\n");
foundFive = true;
}
}
}
start += 5; // 移动到下一行开始的位置
}
printf("\nTotal perfect numbers: %d\n", count); // 输出总数
return 0;
}
```
这个程序会输出1000以内前20个完数,每五行一组,并在最后输出总共有多少个完数。注意,实际计算可能会因为效率不高而无法一次性找出20个完数,尤其是对于大范围,可能需要优化算法。
输出 1 到 100 之间的所有完数。要求定义和调用函数is(n)判断n是否为完数,若n为完数则返回1,否则返回0。完数就是因子和与它本身相等的数,6是完数(6=1+2+3),1不是完数。用C语言写出代码
#include <stdio.h>
int is(int n) {
int sum = 0;
for (int i = 1; i <= n / 2; i++) {
if (n % i == 0) {
sum += i;
}
}
if (sum == n) {
return 1;
} else {
return 0;
}
}
int main() {
for (int i = 1; i <= 100; i++) {
if (is(i)) {
printf("%d ", i);
}
}
printf("\n");
return 0;
}
阅读全文