C++找完數
#include <iostream>
using namespace std;
int main() {
int i, j, k, l, a[10];
for (i = 2; i <= 1000; i++) {
int sum = 0;
k = 0;
l = 0;
for (j = 1; j < i; j++) {
if (i % j == 0) {
sum += j;
a[k] = j;
k++;
l++;
}
}
if (sum == i) {
cout << sum << " its factors are ";
for (i = 0; i < l; i++)
cout << a[i] << " ";
cout << endl;
}
}
return 0;
}
uj5u.com熱心網友回復:
for (i = 2; i <= 1000; i++) {.....
for (i = 0; i < l; i++)
cout << a[i] << " ";
}
用了同一個變數i做控制
uj5u.com熱心網友回復:
改了,然后為什么PTA不能過還顯示運行時錯誤呢
uj5u.com熱心網友回復:
修改如下,供參考://C++找完數
#include <iostream>
using namespace std;
int main()
{
int i, j, k, l, sum; // a[10]
for (i = 2; i <= 1000; i++) {
sum = 0; k = 0; //l = 0;
for (j = 1; j < i; j++) {
if (i % j == 0) {
sum += j;
//a[k++] = j;
//k++; //l++;
}
}
if (sum == i) {
cout << sum << " its factors are ";
for (l=1;l<i;l++)
if (i%l==0) //for (i = 0; i < l; i++)
cout <<l<< " "; //cout << a[i] << " ";
cout << endl;
}
}
return 0;
}
uj5u.com熱心網友回復:
稍稍優化下://C++找完數
#include <iostream>
using namespace std;
int main()
{
int i,j,l,sum;
for (i = 2; i <= 1000; i++) {
sum = 0;
for (j = 1; j <= i/2; j++) {
if (i % j == 0)
sum += j;
}
if (sum == i) {
cout << sum << " its factors are ";
for (l=1;l <= i/2;l++)
if (i%l==0)
cout <<l<< " ";
cout << endl;
}
}
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/269903.html
標籤:C++ 語言
上一篇:數字塔,小白想問問c有類似用法么,就是一下子輸出字符的幾倍,不用for回圈輸出
下一篇:求大佬告知一下
