1.求正整数2和100之间的完全数。
完全数:因子之和等于它本身的自然数,如6=1+2+3
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21#include<iostream> using namespace std; int judge(int x); int main() { int i; for(i=2; i<=100; i++) if(judge(i)==i)//judge(i)为i的因子之和,judge(i)若与i相等,满足条件 cout<<i<<endl; return 0; } int judge(int x) { int i; int sum=0; for(i=1; i<=x-1; i++) //枚举1到x中,判断是否为x的因子 if(x%i==0)//若是x的因子,累加 sum+=i; return sum;//因为和等于本身 }
2.编程求2~n(n为大于2的正整数)中有多少个素数。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26#include<iostream> #include<cmath> using namespace std; bool judge(int x); int main() { int n; int i; int sum=0; cin>>n; for(i=2; i<=n; i++) if(judge(i))//若是素数 sum++;//累加素数个数 cout<<sum<<endl; return 0; } bool judge(int x)//判断素数 { int i=2; while(i<=floor(sqrt(x))&&(x%i)!=0) i++;//能被整除则跳出循环 if(i>floor(sqrt(x))) return true;//除了1和本身不能被整除 return false; }
3.已知 m=max(a,b,c)/max(a+b,b,c)×max(a,b,b+c) ,输入a,b,c,求m。把求三个数的最大数max(x,y,z)分别定义成函数和过程来做。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23#include<iostream> #include<cstdio> using namespace std; int max(int a,int b,int c); int main() { int a,b,c; double m; cin>>a>>b>>c;//输入a、b、c m=1.0*max(a,b,c)/(max(a+b,b,c)*max(a,b,b+c));//计算m printf("%.3lfn",m); return 0; } int max(int a,int b,int c)//求三个数中的最大值 { int temp=a; if(a<b) temp=b; if(temp<c) temp=c; return temp; }
4.如果一个自然数是素数,且它的数字位置经过对换后仍为素数,则称为绝对素数,例如13。试求出所有二位绝对素数。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22#include<iostream> #include<cmath> using namespace std; bool judge(int x); int main() { int i; for(i=10; i<=99; i++) //从10枚举到99 if( judge(i) && judge((i%10)*10+(i/10)) )//分别判断i以及i变换后是否是素数 cout<<i<<endl; return 0; } bool judge(int x)//判断素数 { int i=2; while( i<=floor(sqrt(x)) && (x%i!=0) ) i++; if(i>floor(sqrt(x))) return true; return false; }
5.自然数a的因子是指能被a整除的所有自然数,但不含a本身。例如12的因子为:1,2,3,4,6。若自然数a的因子之和为b,而且b的因子之和又等于a,则称a,b为一对“亲和数” 。求最小的一对亲和数(a<>b)。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26#include<iostream> using namespace std; int judge(int n); int main() { long int i; for(i=1;; i++) //从1开始枚举 { if( i==judge(judge(i)) && i!=judge(i) )//num(num(i))即为i因子之和的因子之和 { cout<<i<<" "<<judge(i)<<endl;//i与judge(i)即满足条件的一组亲和数 break;//退出 } } return 0; } int judge(int n) //因子之和 { long int sum=0; long int i; for(i=1; i<n/2+1; i++) //因子不含0和本身,最大是n/2 if(n%i==0) //能整除 sum+=i;//因子之和 return sum; }
6.如果一个数从左边读和从右边读都是同一个数,就称为回文数。例如6886就是一个回文数,求出所有的既是回文数又是素数的三位数。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22#include<iostream> #include<cmath> using namespace std; bool judge(int x); int main() { int i; for(i=100; i<=999; i++) //从100枚举所有三位数 if( judge(i) && (i/100==i%10))//该数是素数且百位与个位相同 cout<<i<<endl;//输出该数 return 0; } bool judge(int x)//判断素数:除了1和本身不能被整除 { int i=2; while( i<=floor(sqrt(x)) && (x%i!=0) ) i++; if(i>floor(sqrt(x))) return true; return false; }
7.根据公式arctanx(x)=x−x3/3+x5/5−x7/7+…和π=6arctanx(1/√3).定义函数arctanx(x),定义函数arctanx(x),求当最后一项小于10(−6)时π的值。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26#include<iostream> #include<cstdio> #include<cmath> using namespace std; double calculate(double x); int main() { double a,pi; a=1/sqrt(3);//计算公式的参数 pi=6*(calculate(a));//调用函数计算 printf("%.10lfn",pi);//保留十位小数输出 return 0; } double calculate(double x) { double sum=0,temp=x; int i=1; while(fabs(temp/i)>=1e-6)//最后一项绝对值大于10^(-6)(1e-6)时进行循环 { sum+=temp/i;//累加各项 temp=-1*x*x*temp;//求下一项 i+=2;//系数+2 } return sum; }
8.哥德巴赫猜想的命题之一是:大于6 的偶数等于两个素数之和。编程将6~100所有偶数表示成两个素数之和。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27#include<iostream> #include<cmath> using namespace std; bool judge(int x); int main() { int x; int i; for(x=6; x<=100; x+=2) //枚举6-100的偶数 for(i=2; i<=x/2; i++) //将x分解为i与x-i两个数 if(judge(i)&&judge(x-i))//若被分解的两个数皆为素数 { cout<<x<<"="<<i<<"+"<<x-i<<endl;//输出 break;//终止循环 } return 0; } bool judge(int x)//判断素数 { int i=2; while( i<=floor(sqrt(x)) && (x%i!=0) ) i++; if(i>floor(sqrt(x))) return true; return false; }
最后
以上就是贤惠口红最近收集整理的关于6.1-课堂练习的全部内容,更多相关6内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复