一、
问题及代码
/* 文件名称:素数和回数.cpp
* 作 者:曾瑞嘉
* 完成日期:2016 年 6 月5 日
* 版 本 号:v1.0
* 对任务及求解方法的描述部分:项目1:素数和回文
编制2个返回值为int型的函数,用于判断参数是否为素数和回文,调用函数回答以下问题(请包括在一个main()函数中完成,输出时,用明显的提示语,说明正在完成哪个任务。)
int isPrimer(int n)//判断是否为素数
{
}
int isPalindrome(int n) //判断是否为回文,判断一个数是否为回文,可以利用循环把这个反倒过来,再判断倒过来的这个数和原数是不是相等,如n=1223,反过来是3221,和原数不相等,所以不是
{
}
(1)输出300以内的所有素数。
(2)输出300以内的所有回文数。
(3)输出300以内的所有回文素数。
(4)若一个素数的反序数仍为素数,则称它为可逆素数。求300以内的所有可逆素数。
* 输入描述:
* 问题描述:
* 程序输出:
* 问题分析:
* 算法设计:
*/
#include <iostream>
#include<windows.h>//为了使程序不闪退而使用该函数,在使用VC6.0编写时不需要此函数
using namespace std;
int isPrimer(int n)
{
int b = 0,i;
for (i = 1; i <= n; i++)
{
if (n%i == 0)
b++;
}
if (b == 2)
return 1;
else
return 0;
}
int isPalindrome(int n)
{
int sum=0,a,b;
b = n;
while (b != 0)
{
a = b % 10;
sum = sum * 10 +a;
b = b / 10;
}
if (sum == n)
return 0;
else
return 1;
}
void main()
{
int b, c, sum = 0, a;
cout << "输出300以内的所有素数:\n";
for (b = 1; b <= 300; b++)
{
if (isPrimer(b) == 1)
cout << b << "\t";
}
cout << "\n输出300以内的所有回数:\n";
for (b = 1; b <= 300; b++)
{
if (isPalindrome(b) == 0)
cout << b << "\t";
}
cout << "\n输出300以内的所有回文素数:\n";
for (b = 1; b <= 300; b++)
{
if (isPrimer(b) == 1 && isPalindrome(b)==0)
cout << b << "\t";
}
cout << "\n输出300以内的所有可逆素数:\n";
for (b = 1; b <= 300; b++)
{
if (isPrimer(b) == 1)
{
c = b;
while (c != 0)
{
a = c % 10;
sum = sum * 10 + a;
c = c / 10;
}
if (isPrimer(sum) == 1)
cout << b << "\t";
sum = 0;
}
}
system("pause");//见第一条注释
}
二、运行结果
三、心得体会
第一次使用函数这一概念,很不熟悉,需要多练习。遇到了很多问题,也百度了很多知识。学到了很多。
四、知识点总结
函数的使用