正文

找出1到1000内 能被7或11整除 但不能被7和11同时整除的数2005-09-20 11:42:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/boxer/5030.html

分享到:

#include <stdio.h>
#include <assert.h>

void Find(int *a, int *n)
{
 assert(a != NULL && n != NULL);

 int  i;
 int  nCount=0;

 for(i=7; i<1000; i+=7)
 {
  if(i%11 != 0)
   a[nCount++] = i;
 }

 for(i=11; i<1000; i+=11)
 {
  if(i%7 != 0)
   a[nCount++] = i;
 }

 *n = nCount; 
}

// 下面是根据网友留言重新更改的函数,循环次数减少10%左右,但由于没有使用除法运算,所以整体速度提升了好几倍

void Find1(int *a, int *n)
{
 assert(a != NULL && n != NULL);
 
 int  i, j;
 int  nCount=0;
 int  temp;

 for(i=0; i<=1000/77; ++i)
 {
  temp = 77 * i;
  for(j=1; j<7; ++j)
  {
   a[nCount++] = temp+7*j;
   a[nCount++] = temp+11*j;
  }
  for(j=7; j<11; ++j)
   a[nCount++] = temp+7*j;
 }

 *n = nCount;
}

 

int main()
{
 int  a[300];
 int  n;

 Find(a, &n);

 printf("Totally %d numbers, as following: \n", n);
 for(int i=0; i<n; ++i)
 {
  printf("%d\t", a[i]);
 }

 printf("\n");

 return 0;
}

阅读(6123) | 评论(2)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册