c++作业7
2016-06-06 00:39
260 查看
一
项目1:素数和回文
编制2个返回值为int型的函数,用于判断参数是否为素数和回文,调用函数回答以下问题(请包括在一个main()函数中完成,输出时,用明显的提示语,说明正在完成哪个任务。)
(1)输出300以内的所有素数。
(2)输出300以内的所有回文数。
(3)输出300以内的所有回文素数。
(4)若一个素数的反序数仍为素数,则称它为可逆素数。求300以内的所有可逆素数。
二
项目4:数组素数排序
定义一个有10个的数组a,将数组a中的所有素数放在数组b,再对数组b排序。
项目1:素数和回文
编制2个返回值为int型的函数,用于判断参数是否为素数和回文,调用函数回答以下问题(请包括在一个main()函数中完成,输出时,用明显的提示语,说明正在完成哪个任务。)
(1)输出300以内的所有素数。
(2)输出300以内的所有回文数。
(3)输出300以内的所有回文素数。
(4)若一个素数的反序数仍为素数,则称它为可逆素数。求300以内的所有可逆素数。
#include<iostream> using namespace std; int isPrimer(int n) { int i; for(i=2;i<n;i++) { if(n%i==0) return 0; } return 1; }//判断素数 int isPalindrome(int n) { int i,j; if(n<10) return 1; else if(n<100) { i=n/10; j=n%10; if(i==j) return 1; } else if(n<300) { i=n/100; j=n%10; if(i==j) return 1; } return 0; }//判断回文数 int f(int n) { int i,j,k,m; if(n<10&&isPrimer(n)==1) return 1; else if(n<100) { i=n/10; j=n%10; m=j*10+i; if(isPrimer(n)==1&&isPrimer(m)==1) return 1; } else if(n<300) { i=n/100; j=n%100/10; k=n%10; m=k*100+j*10+i; // c=(n%10)*100+(n%100/10)*10+n/100; if(isPrimer(n)==1&&isPrimer(m)==1) return 1; } return 0; }//判断可逆素数 int main () { int i,j=0,k=0,m=0,n=0; cout<<"输出300以内的所有素数"<<endl; for(i=2;i<=300;i++) if(isPrimer(i)==1) { cout<<i<<" "; j++; if(j%7==0) cout<<endl; } cout<<endl;//输出素数 cout<<"输出300以内的所有回文数"<<endl; for(i=2;i<=300;i++) if(isPalindrome(i)==1) { cout<<i<<" "; k++; if(k%7==0) cout<<endl; } cout<<endl;//输出回文数 cout<<"输出300以内的所有回文素数"<<endl; for(i=2;i<=300;i++) if(isPalindrome(i)==1&&isPrimer(i)==1) { cout<<i<<" "; m++; if(m%7==0) cout<<endl; } cout<<endl;//输出回文素数 cout<<"求300以内的所有可逆素数"<<endl; for(i=2;i<=300;i++) if(f(i)==1) { cout<<i<<" "; n++; if(n%7==0) cout<<endl; }//输出可逆素数 cout<<endl; return 0; }
二
项目4:数组素数排序
定义一个有10个的数组a,将数组a中的所有素数放在数组b,再对数组b排序。
#include <iostream> using namespace std; void sort(int p[], int n) { int i,j,k; for(i=0;i<n-1;i++) for(j=0;j<n-i-1;j++) if(p[j]>p[j+1]) { k=p[j]; p[j]=p[j+1]; p[j+1]=k; } }//数组排序 bool prime(int x) { int l; for(l=2;l<x;l++) { if(x%l==0) return 0; } return 1; }//素数判断 void print(int p[],int n) { int m; for(m=0;m<n;m++) cout<<p[m]<<" "; cout<<endl; }//输出数组 int main( ) { int a[10]={2,13,5,47,19,53,27,23,28,11}; int b[10],i,j=0; for(i=0;i<10;i++) if(prime(a[i])==1) { b[j]=a[i]; j++; }//将a中的素数存入b数组 print(b,j); //输出排序前的b数组 sort(b,j); //对数组b排序 print(b,j); //输出排序后的b数组 return 0; }