数组问题
一个数有1到10000的整形数,而一个数A可有有1到10000中的每个项d(B), d(1)=1+1; d(2)=2+2=4;d(3)=3+3=6 ...d(98)=98+9+8=115,d(99)=99+9+9=117...d(998)=998+9+9+8=1024生成,也就是d(n)=n+ n的个各位之和,而A必须在1到10000之间.求A不在B中的数(也就是A包含B,求A不在B内的数)
--------------------编程问答-------------------- private void Bind()
{
int M = 10000;
List<int> A = new List<int>(M);
List<int> B = new List<int>();
for (int i = 1; i < M; i++)
{
A.Add(i);
int n = 0;
if (i.ToString().Length == 1)
{
n = i + i;
}
if (i.ToString().Length == 2)
{
string sum = i.ToString();
n = int.Parse(sum.Substring(0,1))+int.Parse(sum.Substring(1,1))+i;
}
if (i.ToString().Length == 3)
{
string sum = i.ToString();
n = int.Parse(sum.Substring(0, 1)) + int.Parse(sum.Substring(1, 1)) + int.Parse(sum.Substring(2, 1)) + i;
}
if (i.ToString().Length == 4)
{
string sum = i.ToString();
n = int.Parse(sum.Substring(0, 1)) + int.Parse(sum.Substring(1, 1)) + int.Parse(sum.Substring(2, 1)) + int.Parse(sum.Substring(3, 1)) + i;
}
if (n > 0 && n < M)
{
B.Add(n);
}
}
for (int i = 0; i < A.Count; i++)
{
bool fal=false;
for (int j = 0; j < B.Count; j++)
{
if (A[i] == B[j])
{
fal = true;
continue;
}
}
if (fal == false)
{
Response.Write(A[i]+"<br>");
}
}
}
但一个数是10000,如果是比这个数10000还要大呢(如1亿),那要怎么处理还合理呢?请高手指教 --------------------编程问答-------------------- 1、LZ的代码要优化,if太多,宜用if...else if ...else结构;
2、foreach比for循环要快;
3、如有1亿就把它分成几个部分,先分别处理,再集中结果集;
补充:.NET技术 , ASP.NET