C++while语句疑问
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/11/06 09:41:25
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
输入两个数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;
}
#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;
}