#include <stdio.h>
#include <stdlib.h>
long long int array[1000]= {0};
int main()
{
long long int N;
scanf("%lld",&N);
for(int i=0; i<=N; i++)
{
for(int m=N; m>0; m--)
{
if(m%i==0)
array[m]++;
}
}
for(int i=0; i<=N; i++)
{
printf("%d\n",array[i]);
}
return 0;
}
uj5u.com熱心網友回復:
問題多了,沒明白樓主的代碼想實作什么,供參考:#include <stdio.h>
#include <stdlib.h>
long int array[1000]= {0};//這里陣列容量是1000,下標0-999
int main()
{
long int N;
scanf("%lld",&N); //這里如果N 是11位數
for(long int i=1; i<=N; i++) //for( int i=0; i<=N; i++)
{
for(long int m=N; m>=0; m--)//相應的for()里的整形變數和N要同型別,有賦值m=N
{
if(m%i==0) //第一個for()回圈里i不能從0開始,這里出現 m%0
array[m]++;//這里陣列下標就越界了,因為m=N=11位數
}
}
for(long int i=0; i<=N; i++)
{
printf("%d\n",array[i]);
}
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/272367.html
標籤:C語言
下一篇:關于一個類的初始化的問題,求助!
