作业帮 > 综合 > 作业

C++while语句疑问

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/14 04:55:08
C++while语句疑问
输入两个数a,b,其中a>b,从1开始到a结束(包括1和a) 每个数与a求一次最大公约数,求出来的数和b比较大小,最后输出这些数中比b大的个数.
#include
using namespace std;
int main()
{
\x09int a,b,d = 0;
\x09\x09cin >> a >> b;
\x09\x09for (int x = 1; x = b)
\x09\x09\x09{
\x09\x09\x09\x09d++;
\x09\x09\x09}
\x09\x09}
\x09\x09cout n;
\x09int *e = new int[n];
\x09for (i = 0; i < n; i++)
\x09{
\x09\x09int a,b,d = 0;
\x09\x09cin >> a >> b;
\x09\x09for (int x = 1; x = b)
\x09\x09\x09{
\x09\x09\x09\x09d++;
\x09\x09\x09}
\x09\x09}
\x09\x09e[i] = d;
\x09}
\x09for (i = 0; i < n; i++)
\x09{
\x09\x09cout
#include<iostream>

#include<conio.h>

using namespace std;

int main(){ 

 int a, b, d = 0; 

 cin >> a >> b; 

 for (int x = 1; x <= a; x++)

 {   

  int t,s,m;   

  s = x; 

  m = a;//复制a的值

  while (t = m % s)   

  {    

   m = s;//这里不再修改a的值,不然for循环会出问题    

   s = t;   

  }   

  if (s >= b)   

  {    

   d++;   

  }  

 }  

 cout << d << endl;   

 _getch();

 return 0;

}
再问: 哦哦真是太感谢了!我实在很粗心。
其实原题是输入n,代表n对数据需要进行此处理
我写的完整版程序如上,但提交作业时被反馈超时了。。
请问有没有更简洁的方法?我愿意追加悬赏分=_=
再答: #include<iostream>
using namespace std;
#define BUF_SIZE 1024
int main()

 int n, i, d,t,s,m; 
 cin >> n; 
 //int *e = new int[n];
 //栈比堆要快
 int e[BUF_SIZE];
 int a[BUF_SIZE];
 int b[BUF_SIZE];
 for (i = 0; i < n; ++i)
 {
  cin >> a[i] >> b[i];;
 }
 for (i = 0; i < n; i++) 
 {  
   d = 0;  
  for (int x = b[i]; x <= a[i]; x++)
   //最大公约数不会大于两个数中的任何一个,略过小于b的数
  {     
   s = x;   
   m = a[i];   
   while (t = m%s)   
   {    
    m = s;    
    s = t;   
   }   
   if (s >= b[i])   
   {    
    d++;   
   }  
  }  
  e[i] = d; 
 } 
 for (i = 0; i < n; i++) 
 {  
  cout << e[i] << endl; 
 } 
 //system("pause"); //交作业,这行要去掉
 return 0;
}