问题是: “写一个函数来确定一个数字是一个素数还是一个完整的数字。”
到目前为止,我已经完成了最完美的部分,这就是我所拥有的:
#include <iostream>
using namespace std;
bool perfectNumber(int);
int main()
{
int number;
cout<<"Please enter number:\n";
cin>>number;
bool perfectNumber(number);
return 0;
}
bool perfectNumber(int number)
{
int i;
int sum=0;
for(i=1;i<=number/2;i++)
{
if(number%i==0)
{
sum+=i;
}
}
if (sum==number)
return i;
else
return 0;
}
然而,此代码似乎有错误。 我查看了这本书,但没有谈论这个话题。 我想获得有关如何修复此代码的建议。
谢谢!
答案 0 :(得分:7)
bool perfectNumber(number);
这不会调用perfectNumber
函数;它声明了一个名为perfectNumber
的{{1}}类型的局部变量,并使用转换为bool
类型的number
值对其进行初始化。
要调用bool
函数,您需要使用以下内容:
perfectNumber
或:
bool result = perfectNumber(number);
另一方面说明:如果要从流中读取输入(例如bool result(perfectNumber(number));
),则必须检查以确保从流中提取值成功。就像现在一样,如果您输入cin>>number
,则提取将失败,asdf
将保持未初始化状态。检查提取是否成功的最佳方法是测试流的状态:
number
您可以在Semantics of flags on basic_ios
中详细了解如何设置和重置流错误状态。您还应该咨询a good, introductory-level C++ book以获取更多流使用最佳实践。
答案 1 :(得分:1)
void primenum(long double x) {
bool prime = true;
int number2;
number2 = (int) floor(sqrt(x));// Calculates the square-root of 'x'
for (int i = 1; i <= x; i++) {
for (int j = 2; j <= number2; j++) {
if (i != j && i % j == 0) {
prime = false;
break;
}
}
if (prime) {
cout << " " << i << " ";
c += 1;
}
prime = true;
}
}
答案 2 :(得分:1)
bool isPerfect( int number){
int i;
int sum=0;
for(i=1;i<number ;i++){
if(number %i == 0){
cout<<" " << i ;
sum+=i;
}
}
if (sum == number){
cout<<"\n \t\t THIS NUMBER >>> "<< number <<" IS PERFECT \n\n";
return i;
}else if (sum |= number) {
cout<<"\nThis number >>> " << number <<" IS NOT PERFECT \n\n";
return 0;
}
}
答案 3 :(得分:-1)
#pragma hdrstop
#include <tchar.h>
#include <stdio.h>
#include <conio.h>
//---------------------------------------------------------------------------
bool is_prim(int nr)
{
for (int i = 2; i < nr-1; i++) {
if (nr%i==0) return false;
}
return true;
}
bool is_ptr(int nr)
{
int sum=0;
for (int i = 1; i < nr; i++) {
if (nr%i==0) {
sum=sum+i;
}
}
if (sum==nr) { return true;
}
else return false;
}
#pragma argsused
int _tmain(int argc, _TCHAR* argv[])
{
int numar;
printf ("Number=");scanf("%d",&numar);
if (is_prim(numar)==true) { printf("The number is prime");
}
else printf("The number is not prime");
if (is_ptr(numar)==true) { printf(" The number is perfect");
}
else printf(" The number is not perfect");
getch();
return 0;
}