#include "stdafx.h"
#include <iostream>
bool primeNumber( int x )
{
return (x==2,3,5,7) ;
}
int _tmain(int argc, _TCHAR* argv[])
{
using namespace std ;
cout << "ENTER ONE DIGIT NUMBER - " ;
int x ;
cin >> x ;
if ( primeNumber )
cout << x << " IS A PRIME NUMBER " <<endl;
else
cout << x << " IS NOT A PRIME NUMBER " << endl;
return 0;
}
请帮助我..每次都是相同的,即&#39; x&#39;是一个素数.. 也建议改变......我只是一个初学者,所以也建议改进我的代码的方法
答案 0 :(得分:6)
试试这个:
if ( primeNumber(x) )
而不是
if ( primeNumber )
并改变你的退货声明,如
return x == 2 || x == 3 || x == 5 || x == 7;
如果你想比较价值。
答案 1 :(得分:6)
return (x==2,3,5,7)
这不符合您的想法,逗号分隔的表达式返回列表中最后一个表达式的值,您primeNumber
方法基本上总是返回7
,其值为{{1 }}
您必须将值与每个值进行比较,例如:
true
此外,正如Rahul所指出的那样,你不是在调用方法,而只是将指向函数return x == 2 || x == 3 || x == 5 || x == 7;
的指针与0不同,这是一个简单的primeNumber
。
答案 2 :(得分:3)
此函数始终返回bool primeNumber( int x )
{
return (x==2,3,5,7) ;
}
bool primeNumber( int x )
{
return ( x == 2 || x == 3 || x == 5 || x == 7 );
}
因为在return语句中使用了逗号运算符,其值为7,与0不同。
我认为你的意思是以下
if ( primeNumber )
if语句中的条件
primeNumber
也总是为true,因为if ( primeNumber( x ) )
是一个与0不同的有效函数指针。
你必须写
if ( primeNumber( x % 10 ) )
至于我,那么我会写下面的方式
bool primeNumber( unsigned int x )
{
bool prime = ( x == 2 ) || ( x % 2 != 0 && x != 1 );
for ( unsigned int i = 3; prime && i * i <= x; i += 2 )
{
prime = x % i != 0;
}
return prime;
}
因为没有什么可以阻止用户输入包含多个数字的数字。
该功能可以通过以下方式定义
public abstract class BaseActivity extends AppCompatActivity {
private Toolbar mToolbar;
private FrameLayout mContentFrame;
private ActivityFragment mActivityFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(setLayout());
initViews();
initToolbar();
}
protected int setLayout() {
return R.layout.activity_base;
}
//I want to override this and provide a different toolbar layout!
protected int setToolbarLayout(){
return R.layout.toolbar;
}
protected void initViews() {
mToolbar = (Toolbar) findViewById(R.id.toolbar);
mContentFrame = (FrameLayout) findViewById(R.id.contentFrame);
}
private void initToolbar() {
setSupportActionBar(mToolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
mToolbar.setElevation(10f);
}
}
protected void setContentFragment(ActivityFragment fragment) {
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(getContentFrame().getId(), fragment).commit();
supportInvalidateOptionsMenu();
this.mActivityFragment = fragment;
setTitle(fragment.getTitle(this));
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
}
return super.onOptionsItemSelected(item);
}
public Toolbar getToolbar() {
return mToolbar;
}
public FrameLayout getContentFrame() {
return mContentFrame;
}
public ActivityFragment getActivityFragment() {
return mActivityFragment;
}